本章介紹排序算法中的桶排序。内容包括:
1.
2.
3.
3.1
3.2
3.3
轉載請注明出處:
更多排序和算法請參考:
桶排序(bucket
sort)的原理很簡單,它是将數組分到有限數量的桶子裡。
假設待排序的數組a中共有n個整數,并且已知數組a中資料的範圍[0,
max)。在桶排序時,建立容量為max的桶數組r,并将桶數組元素都初始化為0;将容量為max的桶數組中的每一個單元都看作一個"桶"。
在排序時,逐個周遊數組a,将數組a的值,作為"桶數組r"的下标。當a中資料被讀取時,就将桶的值加1。例如,讀取到數組a[3]=5,則将r[5]的值+1。
桶排序代碼
bucketsort(a, n,
max)是作用是對數組a進行桶排序,n是數組a的長度,max是數組中最大元素所屬的範圍[0,max)。
假設a={8,2,3,4,3,6,6,3,9},
max=10。此時,将數組a的所有資料都放到需要為0-9的桶中。如下圖:
在将資料放到桶中之後,再通過一定的算法,将桶中的資料提出出來并轉換成有序數組。就得到我們想要的結果了。
桶排序c實作
實作代碼(bucket_sort.c)
view code
桶排序c++實作
實作代碼(bucketsort.cpp)
桶排序java實作
實作代碼(bucketsort.java)
view
code
上面3種實作的原理和輸出結果都是一樣的。下面是它們的輸出結果: