天天看點

桶排序

本章介紹排序算法中的桶排序。内容包括:

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種實作的原理和輸出結果都是一樣的。下面是它們的輸出結果: