基數排序(java實現)

2021-09-02 02:15:10 字數 1078 閱讀 9343

將所有待比較數值(正整數)統一為同樣的數字長度,數字較短的數前面補零。然後,從最低位開始,依次進行一次排序。這樣從最低位排序一直到最高位排序完成以後,數列就變成乙個有序序列。

參考文章:【點我】

時間複雜度:基數排序中r為基數,d為位數。時間複雜度為o(d(n+r))

空間複雜度:對於任何位數上的基數進行「裝桶」操作時,都需要n+r個臨時空間。

穩定性:相同的數字並不需要交換位置。所以基數排序是穩定的演算法。

排序型別

時間複雜度(平均)

時間複雜度(最壞)

時間複雜度(最好)

空間複雜度

穩定性複雜性

交換排序

o(d(n+r))

o(d(n+r))

o(d(n+r))

o(n+r)

穩定較複雜

public static void main(string args) ;

digitsort(a, a.length);

print(a);// 自定義輸出陣列

}public static int maxbit(int inputlist)

int bitsnum = 0;

while (maxdata > 0)

return bitsnum;

}public static int digit(int num, int d)

return num / pow % 10;

}public static void digitsort(int inputlist, int n)

for (int i = 0; i < n; i++)

for (int i = 1; i < 10; i++)

// 這裡只能從陣列後往前迴圈,因為排序時還需保持以前的已排序好的順序,不應該打亂原來已排好的序

for (int i = n - 1; i >= 0; i--)

for (int i = 0; i < n; i++)

}}

Java實現基數排序

在眾多的排序方法中基數排序比較特殊,它是一種不需要進行關鍵字之間比較的排序方法,利用多關鍵字的劃分,逐漸將待排序列排好序。舉個例子 現在有陣列 278,109,63,930,589,184,505,269,8,83 第一次根據各位數將陣列劃分為10個佇列 當然其中的某些佇列可能不含有元素 0 930...

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,...