對於一組有界的整數,比如有n個數,它們的取值為[1,m],那麼對於這樣的一組數的排序,可以使用桶式排序。假設這一組整數儲存在乙個陣列a中,桶式排序的基本思想是維護乙個count陣列,這個陣列有m個單位(相當於m個桶),在讀入a中的資料a[i]時,count[a[i]]加1,也即是把a[i]放進count的乙個桶裡,資料讀取完成排序即完成。掃瞄count陣列的元素,並順序輸出非0項的index(count[index]為多少就輸出多少次)。很顯然桶式排序的時間為掃瞄a陣列n 個元素的時間加上掃瞄count陣列m個元素的時間,於是為o(m + n)。下面給出桶式排序的乙個c語言實現版。
#include void bucketsort(int a, intn);int
main()
; bucketsort(a, n);
return0;
}void bucketsort(int a, int
n) printf("\n
");for(i = 0; i < m; i ++)
}printf("\n
");}
前面講了桶式排序,基數排序實際上是桶式排序的推廣。如果n個數是0到np-1中的,顯然如果用桶式排序的話,桶的個數就多得讓人無法接受了,因此使用基數排序,即多趟的桶式排序。
基數排序和桶排序
基數排序是針對特定場景做出的排序方法 特定場景具體指的是 待排序的序列每個元素都是由一組有固定長度,且每個 字元 都是在一定數值範圍內。說的有點繞,舉個栗子 目前也只知道這個場景 一組有相同長度的字串需要進行排序,每個字串長度一定,每個字串的每乙個字元都是a z 0 9,假設都是大寫。這個時候就可以...
桶排序和基數排序
方法一 每個桶只放相同的數字 入桶過程 1 把正數和0存入正數桶,把負數存入負數桶 2 把陣列中的每項作為正數桶或負數桶的下標存入到對應的key裡 出桶過程 先遍歷正數桶或負數桶,因為桶裡每項都是陣列,在遍歷每項 function bucketsort array negativebucket ab...
基數排序(桶排序)
1。什麼是基數排序 radix sort 基數排序 屬於分配式排序 distribution sort 又稱 桶排序 bucket sort 它是通過鍵值的各個位的值,將要排序的元素分配至某些 桶 中,達到排序的作用。2.它和歸併一樣,屬於穩定型演算法。public void radixsort i...