使用Java實現基數排序算法
基數排序是一種非比較型整數排序算法,通過按數位從低位到高位處理數字,將每個數字按當前數位分配到“桶”中,再按桶順序收集回原數組,重複直至所有數位處理完畢,適合位數少的整數,效率較高。基本思想是“分配-收集-重複”:按當前數位(個位、十位等)分配到對應桶,按桶順序收集回數組,循環處理所有數位。 以數組[5,3,8,12,23,100]爲例,經個位、十位、百位三輪處理完成排序。Java代碼中,通過找到最大數確定最高數位,用`(num / radix) % 10`獲取當前位,以ArrayList爲桶實現分配收集。時間複雜度O(d(n+k))(d爲最大數位數,k=10),空間O(n+k)。該算法穩定,適合整數排序,負數可分離正負後分別排序再合併。
閱讀全文使用Java實現插入排序算法
插入排序是一種簡單直觀的排序算法,核心思想是將未排序元素逐個插入已排序部分的正確位置,類似整理撲克牌。適合小規模數據,實現簡單。 基本思路:從第2個元素開始,將當前元素記爲“待插入元素”,與已排序部分從後往前比較,若已排序元素更大則後移,直至找到插入位置,重複操作直至所有元素處理完畢。 Java實現需保存待插入元素,通過循環比較並後移元素完成插入。算法時間複雜度:最好O(n)(已排序),最壞和平均O(n²);空間複雜度O(1)(原地排序);穩定排序,適用於小規模數據或幾乎有序數據。 其核心在於“逐步插入”,實現簡單,穩定性和原地性使其在小規模排序中表現良好。
閱讀全文