基數排序也是穩定的內排序。
因為它的實現是基於內部使用了穩定的排序實現的所以基數排序整體是穩定的,而且時間複雜度為o(n)。
舉個例子:
現在我們將一些3(多)位數排序,如果你說直接判斷就好的話,那你就太天真了,因為那就又變成看o(nlgn)或者o(n²)。
如何能降低時間複雜度變成o(n) 呢?
那就要使用線性時間的排序了,正如上篇的計數排序。
基數排序 利用的是計數排序進行排序的。因為計數排序是穩定的排序,即排序後的大小順序 會與 上一輪的排序順序結果一致。
再舉個例子:
排序前第一遍排序後
第二遍排序後
第三遍排序後
排序的結果
331420
410315
315315
410315
331331
420331
420410
410410
315331
420420
請看:1、 第二次排序後 你會發現 :315 一直是在 331 下面 ;410 一直是在 420 下面。
2、 第三次排序後 就會整體有序了。
radixsort(int a)
附上演算法**:
public class radixsort
for (int i = 0; i < num; i++)
}for (int i = 1; i < k; i++)
for (int i = num - 1; i >= 0; i--)
return result;
}public static int radixsort(int s)
s = countingsort(a, s, p, 10); //10 每位數字的範圍
system.out.println("第 "+(n+1)+" 次");
for (int v : s)
system.out.println();
}return s;
}public static void main(string args) ;
for (int v : s)
system.out.println();
s=radixsort(s);
system.out.println("最終結果:");
for (int v : s)
}}
歡迎討論…… 排序演算法之基數排序
首先從多排序碼排序開始介紹基數排序。以撲克牌排序為例。每張撲克牌有兩個 排序碼 花色和面值。其有序關係為 如果把所有撲克牌排成以下次序 2,a,2,a,2,a,2,a 這就是多排序碼排序。排序後形成的有序序列叫做字典有序序列。一般情況下,假定有乙個n個元素的序列 v 0,v1 vn 1 且每個元素v...
排序演算法之基數排序
如果我們要排序的資料具有多個關鍵字域,那就可以採用基數排序的方法了。基數排序的主要思想是 假如參加排序的元素最高具有d位,有的數沒有d位那麼多,則在其欠缺的高位補0,將元素先按最低位 設最右邊的位為最低位 的值進行排序,然後按次低位進行排序.最後進行最高位的排序。基數排序如果想達到理想的目的,必須滿...
排序演算法之基數排序
基於排序是一種很特別的排序方法,它採用多關鍵字排序思想 即基於關鍵字各位的大小進行排序 借助 分配 和 收集 兩種操作對單邏輯關鍵字進行排序。基數排序又分為最高位優先 msd 和最低位優先 lsd 排序。基數排序 public void sort int array 建立乙個二維陣列 listque...