Java實現基數排序

2021-08-26 19:08:39 字數 1101 閱讀 6550

在眾多的排序方法中基數排序比較特殊,它是一種不需要進行關鍵字之間比較的排序方法,利用多關鍵字的劃分,逐漸將待排序列排好序。

舉個例子:

現在有陣列: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,...