排序演算法(二)基數排序

2022-05-19 08:34:41 字數 918 閱讀 3856

//基數排序(只能排正整數)

#include

#include

#include

using

namespace std;

//求最大的數的位數,來確定要做幾次迴圈排序

intmaxbit

(int data,

int n)

//輔助函式,求資料的最大位數

int d =1;

int p =10;

while

(maxdata >= p)

return d;

/* int d = 1; //儲存最大的位數

int p = 10;

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

}return d;*/

}void

radixsort

(int data,

int n)

//基數排序

for(j =

1; j <

10; j++

) count[j]

= count[j -1]

+ count[j]

;//將tmp中的位置依次分配給每個桶

for(j = n -

1; j >=

0; j--

)//將所有桶中記錄依次收集到tmp中

for(j =

0; j < n; j++

)//將臨時陣列的內容複製到data中

data[j]

= tmp[j]

; radix = radix *10;

}delete

tmp;

delete

count;

}int

main()

}

排序演算法 基數排序

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

排序演算法 基數排序

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

排序演算法 基數排序

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