排序演算法 基數排序

2021-10-13 10:28:46 字數 1551 閱讀 2803

基數排序是2023年赫爾曼·何樂禮發明的。基數排序(radix sort)屬於「分配式排序」(distribution sort),又稱「桶子法」(bucket sort)或bin sort,顧名思義,它是通過鍵值的各個位的值,將要排序的元素分配至某些「桶」中,達到排序的作用。基數排序法是屬於穩定性的排序,在某些時候,基數排序法的效率高於其它的穩定性排序法。

o(n*k)     k: 「桶」的個數

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

* 〈基數排序〉

* * @date: 2020/12/29 11:18 下午

*/public

class

radixsort

;radixsort

(arr)

; system.out.

println

(arrays.

tostring

(arr));

}public

static

void

radixsort

(int

arr)

}int maxlength =

(max +"")

.length()

;// 資料桶

int[

] bucket =

newint[10

][arr.length]

;// 每個桶的當前索引

int[

] bucketindex =

newint[10

];// 迴圈每一位數

for(

int i =

0, m =

1; i < maxlength; i++

, m *=10)

// 將桶中的資料依次取出到原陣列中

int arrindex =0;

for(

int b =

0; b < bucket.length; b++

) bucketindex[b]=0

;}}}

}執行輸出:

[3, 14, 53, 214, 542, 748]

基數排序是對傳統桶排序的擴充套件,速度很快。

基數排序是經典的空間換時間的方式,占用記憶體很大, 當對海量資料排序時,容易造成 outofmemoryerror 。

排序演算法 基數排序

基數排序 思想 基數排序屬於 分配式排序 分為高位優先法msd和低位優先法lsd 低位優先法lsd 從最低位k0開始排序 對於排好的序列再用次低位k1排序 依次重複,直至對最高位kd 1排好序後,整個序列稱為有序的 這是乙個分 收 分 收 分 收的過程 特點 穩定 空間複雜度 o dn 時間複雜度 ...

排序演算法 基數排序

一 基數排序的思想 不直接比較數與數的大小。把待排序的整數按位分,分為個位,十位 從小到大依次將位數進行排序。實際上分為兩個過程 分配和收集。分配就是 從個位開始,按位數從小到大把資料排好,分別放進0 9這10個桶中 收集就是 依次將0 9桶中的資料放進陣列中 重複這兩個過程直到最高位 二 過程 比...

排序演算法 基數排序

基數排序稱桶排序。它按照記錄的各位值逐步進行排序。適用於整數型別的排序。基數排序不同於別的排序方法通過比較和交換來排序,它是通過按照桶來分配和收集的方法實現的。基本思想 假設待排序的記錄都是m位d進製 不足m位的高位補0 設定d個桶 0,1,d 1 首先將序列中的記錄按照最低位值的大小分配到各個桶中...