排序演算法 基數排序

2021-09-29 22:43:19 字數 772 閱讀 2148

基數排序是借助「分配」和「收集」兩種操作對單邏輯關鍵字進行排序的一種內部排序方法。

陣列下標從0-9,每個陣列元素是乙個鍊錶

比如對一些三位數以內的樹排序,先將個位的數值插入對應的下標的鍊錶中,然後再放回原陣列,放回的順序和插入的順序一致,將鍊錶清空,再將十位的數字插入對應的下標的鍊錶中,依次操作,最終陣列中的資料便以完成排序。

//基數排序

2int getkey(int value, int k) //

獲取乙個數的第k位數字311

return

key;12}

1314

void distribube(int *arr, int n, int k, list *lists) //

分配1521}

2223

void collect(int *arr, list *lists) //

收集24

35 lists[i].clear(); //

收集完成要清空鍊錶36}

37}3839

void radixsort(int *arr, int

n)40

48 }

基數排序的時間複雜度為o(d(n+r))

其中:分配為o(n)

基數排序的空間複雜度為o(r)

屬於穩定的排序演算法

排序演算法 基數排序

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

排序演算法 基數排序

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

排序演算法 基數排序

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