1. 桶排序介紹
桶排序(Bucket sort)是一種基于計數的排序算法,工作的原理是將數據分到有限數量的桶子里,然后每個桶再分別排序(有可能再使用別的排序算法或是以遞回方式繼續使用桶排序進行排序)。當要被排序的數據內的數值是均勻分配的時候,桶排序時間復雜度為Θ(n)。桶排序不同于快速排序,并不是比較排序,不受到時間復雜度 O(nlogn) 下限的影響。
桶排序按下面4步進行:
(1)設置固定數量的空桶。
(2)把數據放到對應的桶中。
(3)對每個不為空的桶中數據進行排序。
(4)拼接從不為空的桶中數據,得到結果。
桶排序,主要適用于小范圍整數數據,且獨立均勻分布,可以計算的數據量很大,而且符合線性期望時間。
2. 桶排序算法演示
舉例來說,現在有一組數據[7, 36, 65, 56, 33, 60, 110, 42, 42, 94, 59, 22, 83, 84, 63, 77, 67, 101],怎么對其按從小到大順序排序呢?

操作步驟說明:
(1)設置桶的數量為5個空桶,找到最大值110,最小值7,每個桶的范圍20.8=(110-7+1)/5 。
(2)遍歷原始數據,以鏈表結構,放到對應的桶中。數字7,桶索引值為0,計算公式為floor((7
主站蜘蛛池模板:
都江堰市|
宜都市|
阜新市|
威海市|
随州市|
利川市|
绥阳县|
南开区|
喀什市|
泰顺县|
积石山|
朝阳市|
贵德县|
鹿泉市|
白沙|
新泰市|
仁怀市|
华蓥市|
阳城县|
钟祥市|
五河县|
内丘县|
彭州市|
微山县|
西平县|
临夏市|
文昌市|
胶南市|
周口市|
沂水县|
六盘水市|
新干县|
浦城县|
达州市|
巴彦淖尔市|
玛沁县|
鲜城|
盖州市|
四平市|
建昌县|
武义县|