基數排序也是非比較的排序演算法,對每一位進行排序,從最低位開始排序,複雜度為o(kn),為陣列長度,k為陣列中的數的最大的位數;
基數排序是按照低位先排序,然後收集;再按照高位排序,然後再收集;依次類推,直到最高位。
有時候有些屬性是有優先順序順序的,先按低優先順序排序,再按高優先順序排序。
最後的次序就是高優先順序高的在前,高優先順序相同的低優先順序高的在前。基數排序基於分別排序,分別收集,所以是穩定的。
* 基數排序
* @param array
* @return
*/public static int radixsort(int array)
int maxdigit = 0;
while (max != 0)
int mod = 10, div = 1;
arraylistbucketlist = new arraylist();
for (int i = 0; i
bucketlist.add(new arraylist());
for (int i = 0; i < maxdigit; i++, mod *= 10, div *= 10)
int index = 0;
for (int j = 0; j < bucketlist.size(); j++)
}return array;
}最佳情況:t(n) = o(n * k)最差情況:t(n) = o(n * k)平均情況:t(n) = o(n * k)基數排序有兩種方法:
msd 從高位開始進行排序 lsd 從低位開始進行排序
基本排序演算法之2 基數排序radixsort
基數排序是基於桶式排序的變種,主要是為了通過多次遍歷減少空間占用 效果相當顯著 其思路可以描述為 1.首先待排序的序列要滿足基數排序的特徵,比如有 基數 的概念 整數和字串都可以套用 2.建立乙個大小為 基數 的陣列,陣列每個元素是乙個佇列 為了節省空間應該使用鍊錶實現 3.根據序列的 位數 決定遍...
演算法之基數排序
基數排序思想 利用個十百千等位數數字進行排序,不經過資料之間比較,以下 純手擼,實現起來還是比較簡單的,不過是第一次實現,不追求效率,只求實現。真個實現主要邏輯分為兩步,第一步把原始資料按照位數大小分配到二維陣列中,第二步再把二維陣列中資料按順序取出到原始陣列中,完成一次各位排序 接下來就是迴圈,依...
演算法 排序之基數排序
基數排序也是穩定的內排序。因為它的實現是基於內部使用了穩定的排序實現的所以基數排序整體是穩定的,而且時間複雜度為o n 舉個例子 現在我們將一些3 多 位數排序,如果你說直接判斷就好的話,那你就太天真了,因為那就又變成看o nlgn 或者o n 如何能降低時間複雜度變成o n 呢?那就要使用線性時間...