桶排序是計數排序的公升級版。它利用了函式的對映關係,高效與否的關鍵就在於這個對映函式的確定。
理解:
桶排序是計數排序的變種,把計數排序中相鄰的m個"小桶"放到乙個"大桶"中,在分完桶後,對每個桶進行排序(一般用快排),然後合併成最後的結果。桶排序是穩定演算法。
基本思想:
桶排序的思想近乎徹底的分治思想。
效率分析:
以犧牲空間複雜度換取時間複雜度的排序方式,不是比較排序類。
1、假設有n個元素,m個桶
時間複雜度為 o(n+mn/mlog(n/m))=o(n+nlogn-nlogm)
空間複雜度:o(n+m);
當m越大時,趨近於n時,時間複雜度達到最優為:o(n);此時空間複雜度達到最大;
2、演算法思想(假設每個桶的容量是相同的)
(1)設定桶的容量大小為n/m;
(2)每個桶是有序的,如:桶2 裡面的最小值大於桶1 的最大值;如:要對大小為[1…1000]範圍內的n個整數a[1…n]排序, 首先,可以把桶設為大小為10的範圍,具體而言,設集合b[1]儲存[1…10]的整數,集合b[2]儲存 (10…20]的整數,……集合b[i]儲存( (i-1)10, i10]的整數,i = 1,2,…100。總共有 100個桶。
(3)將每個桶的數字選擇某種排序演算法(可以是堆排序、快速排序或者桶排序)進行排序;
(4)桶序從小到大,依次輸出每個桶的數字;
3、缺點:
(1)空間複雜度高;
(2)適合待排序的數值分布在一定範圍內的序列。
複習資料結構 排序演算法(七) 桶排序
桶排序是一種穩定的排序方法,也是一種外排序。也就說,前面介紹的排序演算法要麼是o n 2 要麼是o nlogn 只有桶排序是可能實現o n 排序的,但是對資料是有要求的。基本思想 是將陣列分到有限數量的桶子裡。每個桶子再個別排序 有可能再使用別的排序演算法或是以遞迴方式繼續使用桶排序進行排序 桶排序...
排序演算法 桶排序
桶排序 bucket sort 或所謂的箱排序,是乙個排序演算法,工作的原理是將陣列分到有限數量的桶子裡。每個桶子再個別排序 有可能再使用別的排序演算法或是以遞迴方式繼續使用桶排序進行排序 桶排序是鴿巢排序的一種歸納結果。當要被排序的陣列內的數值是均勻分配的時候,桶排序使用線性時間 n 但桶排序並不...
排序演算法 桶排序
2009 12 02 12 01 2817人閱讀 桶排序 bucket sort 或所謂的箱排序,是乙個排序演算法,工作的原理是將陣列分到有限數量的桶子裡。每個桶子再個別排序 有可能再使用別的排序演算法或是以遞迴方式繼續使用桶排序進行排序 桶排序是鴿巢排序的一種歸納結果。當要被排序的陣列內的數值是均...