Algorithm 基數排序

2022-07-09 22:15:11 字數 1268 閱讀 6416

基數排序(以整形為例),將整形10進製按每位拆分,然後從低位到高位依次比較各個位。主要分為三個過程:

分配,先從個位開始,根據位值(0-9)分別放到0~9號桶中(比如53,個位為3,則放入3號桶中)

收集,再將放置在0~9號桶中的資料按順序放到陣列中

重複(1)(2)過程,從個位到最高位(比如32位無符號整形最大數4294967296,最高位10位)

下面以【521 310 72 373 15 546 385 856 187 147】序列為例,具體細節如下圖所示:

//列印陣列

void print(int *a, int

n) }

//基數排序

void radixsort(int *a, int

n) }

while (m / exp > 0

) ;

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

for (i = 1; i < base; i++)

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

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

exp *=base;

#ifdef showpass

printf(

"\npass : ");

print(a, n);

#endif

} }

intmain()

printf(

"\n排序前 : ");

print(&arr[0

], n);

radixsort(&arr[0

], n);

printf(

"\n排序之後 : ");

print(&arr[0

], n);

printf("\n

");return0;

}[1] 

[2] 

[3] 

排序 基數排序

基數排序 radix sort 是屬於 分配式排序 distribution sort 基數排序法又稱 桶子法 bucket sort 或bin sort,顧名思義,它是透過鍵值的部份資訊,將要排序的元素分配至某些 桶 中,藉以達到排序的作用。排序思想 首先按照資料的最低位 個位 將資料分配到0 9...

排序 基數排序

1 基數排序 桶排序 介紹 1 基數排序 radix sort 屬於 分配式排序 distribution sort 又稱 桶子法 bucket sort 或bin sort,顧名思義,它是通過鍵值的各個位的值,將要排序的元素分配至某些 桶 中,達到排序的作用 2 基數排序法是屬於穩定性的排序,基數...

桶排序 基數排序 計數基數排序 Java

前面已經講述了很多排序演算法,但是他們的排序演算法都是基於兩個值之間的比較,通過決策樹的方法可以證明深度為d的二叉樹則最多有 一些好的排序演算法是可以達到時間複雜度是線性的,桶排序就是其中一種。比如有n個數,但是這些數的最大數不超過m。這個時候就可以定義乙個含有m個元素的陣列 初始值為0 然後遍歷n...