bucket sort 桶排序

桶排序(bucket sort)從一個一維的待排序的正整數數組和一個二維整數數組開始,其中二維數組的行下標是從0到9,列下標是從0到n-1,n是一維數組中待排序值的個數。這個二維數組的每一行都成爲一個桶。編寫一個函數bucketSort,它採用一個整數數組和該數組的大小作爲參數,並執行以下操作:

a)對於一維數組的每個值,根據值的個位數,將其放到桶數組的各行中。例如,97放在第7行,3放在第3行,100放在第0行。這稱爲“分佈過程”。

b)在桶數組中逐行循環便利,並把值複製回原始數組。這稱爲“收集過程”。上述值在一維數組中的新次序是 100、3和97.

c)對隨後的每個數位(十位、百位、千位等)重複這個過程。在第二遍排序時,100放在第0行,3放在第0行(因爲3沒有十位),97放在第9行。收集過程之後,一維數組 中值的順序爲100、3和97.在第三遍排序時,100放在第一行,3放在第0行,97放在第0行(在3之後)。在最 後一次收集過程後,原屬數組就是有序的了。

請注意,二維桶數組的大小是被排序的整數數組大小的10倍。這種排序方法的性能比插入排序好,但是需要非常多的內存空間。插入排序只需要額外的一個數據元素的空間。這使一個時間權衡的範例:桶排序使用的內存空間比插入排序多,但是性能比較好。這個版本的桶排序需要在每一遍排序時把所有數據複製回原始數組。另外一種方法是創建第二個二維桶數組,並在這兩個桶數組間重複交換數據。


本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/zhongjiekangping/archive/2009/12/26/5082938.aspx

 

相關排序還有  radix sort , counting sort ,都是非comparision sort

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章