排序演算法 基數排序

2021-08-11 01:35:40 字數 1084 閱讀 1127

基數排序

【思想】基數排序屬於「分配式排序」,分為高位優先法msd和低位優先法lsd

低位優先法lsd:

·從最低位k0開始排序

·對於排好的序列再用次低位k1排序

·依次重複,直至對最高位kd-1排好序後,整個序列稱為有序的

這是乙個分、收;分、收;...;分、收的過程

【特點】穩定

空間複雜度:o(dn)

時間複雜度:o(n)

不用比較和移動,採用分配和收集,時間效率高

基數排序有兩種儲存方式:

1.基於順序儲存

2.基於鏈式儲存

1

int maxbit(int data, int n) //

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

}13return

d;14}15

void radixsort(int data, int n) //

基數排序

1631

for(j = 1; j < 10; j++)

32 count[j] = count[j - 1] + count[j]; //

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

33for(j = n - 1; j >= 0; j--) //

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

3439

for(j = 0; j < n; j++) //

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

40 data[j] =tmp[j];

41 radix = radix * 10;42

}43delete

tmp;

44delete

count;

45 }

排序演算法 基數排序

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

排序演算法 基數排序

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

排序演算法 基數排序

一 基數排序 1 介紹。基數排序 radix sort 屬於 分配式排序 distribution sort 又稱 桶子法 bucket sort 或bin sort,顧名思義,它是透過鍵值的部份資訊,將要排序的元素分配至某些 桶 中,藉以達到排序的作用,基數排序法是屬於穩定性的排序,其時間複雜度為...