在眾多的排序方法中基數排序比較特殊,它是一種不需要進行關鍵字之間比較的排序方法,利用多關鍵字的劃分,逐漸將待排序列排好序。
舉個例子:
現在有陣列:278,109,63,930,589,184,505,269,8,83
第一次根據各位數將陣列劃分為10個佇列
(當然其中的某些佇列可能不含有元素)
0:930
1:2:
3:63,83
4:184
5:505
6:7:
8:278,8
9:109,589,269
然後收集成序列:
930,63,83,184,505,278,8,109,589,269
在進行第二次分組:
0:505,8,109
1:2:
3:930
4:5:
6:63,269
7:278
8:83,184,589
9:第二次收集:
505,8,109,930,63,269,278,83,184,589
第三次分配:
0:8,63,83
1:109,184
2:278,269
3:4:
5:505,589 6
: 7:
8: 9:930
最後得到序列:
8,63,83,109,184,269,278,505,589,930
完成排序!
基數排序其實是利用多關鍵字先達到區域性有序,再調整達到全域性有序。
public static void radixsort(int array)
} int time=0;
//判斷位數;
while(max>0)
//建立10個佇列;
linkqueue queue=new linkqueue[10];
for(int i=0;i<10;i++)
//進行time次分配和收集;
for(int i=0;i0)
}}
}
如果待排序列的關鍵字不是自然數,我們當然可以對其進行轉化,然後利用類似的方式排序。 基數排序(java實現)
將所有待比較數值 正整數 統一為同樣的數字長度,數字較短的數前面補零。然後,從最低位開始,依次進行一次排序。這樣從最低位排序一直到最高位排序完成以後,數列就變成乙個有序序列。參考文章 點我 時間複雜度 基數排序中r為基數,d為位數。時間複雜度為o d n r 空間複雜度 對於任何位數上的基數進行 裝...
Java實現基數排序
基數排序不同於之前所介紹的各類排序,前邊介紹到的排序方法或多或少的是通過使用比較和移動記錄 元素 來實現排序,而基數排序的實現不需要進行對關鍵字的比較,只需要對關鍵字進行 分配 與 收集 兩種操作即可完成。例如對無序表 進行基數排序,由於每個關鍵字都是整數數值,且其中的最大值由個位 十位和百位構成,...
基數排序法(Java實現)
class demo 呼叫基數排序函式 lsd radixsort arr,3 輸出排序後的陣列 for int i 0 i arr是要排序的陣列,max是陣列中最大的數有幾位 public static void lsd radixsort int arr,int max 分別統計第k位是0,1,...