演算法之桶排序

2021-09-11 01:46:59 字數 1088 閱讀 1684

桶排序是計數排序的公升級版。它利用了函式的對映關係,高效與否的關鍵就在於這個對映函式的確定。

桶排序 (bucket sort)的工作的原理:假設輸入資料服從均勻分布,將資料分到有限數量的桶裡,每個桶再分別排序(有可能再使用別的排序演算法或是以遞迴方式繼續使用桶排序進行排

注意,如果遞迴使用桶排序為各個桶排序,則當桶數量為1時要手動減小bucketsize增加下一迴圈桶的數量,否則會陷入死迴圈,導致記憶體溢位。

* 桶排序

** @param array

* @param bucketsize

* @return

*/ public static arraylist bucketsort(arraylistarray, int bucketsize)

int bucketcount = (max - min) / bucketsize + 1;

arraylistbucketarr = new arraylist<>(bucketcount);

arraylistresultarr = new arraylist<>();

for (int i = 0; i < bucketcount; i++)

for (int i = 0; i < array.size(); i++)

for (int i = 0; i < bucketcount; i++)

return resultarr;

}桶排序最好情況下使用線性時間o(n),桶排序的時間複雜度,取決與對各個桶之間資料進行排序的時間複雜度,因為其它部分的時間複雜度都為o(n)。很顯然,桶劃分的越小,各個桶之間的資料越少,排序所用的時間也會越少。但相應的空間消耗就會增大。 

最佳情況:t(n) = o(n+k)

最差情況:t(n) = o(n+k)

平均情況:t(n) = o(n2)

演算法之桶排序

思想 正如網上大部分文章所說,桶排序就是把原始陣列的資料防放入各個桶中。然後對桶再排序,然後把每個桶的資料依次輸出到原始陣列就可以了,我自己寫了個簡陋版本的,不求效率,只求簡易實現。我自己寫這個效率很低,有時間再改進吧。public class bucketsort long a system.cu...

排序演算法之桶排序

1 設定乙個定量的陣列當作空桶子 2 尋訪序列,並且按照要求把記錄乙個乙個放到對應的桶子去 3 對每個不是空的桶子進行排序。4 從不是空的桶子裡把專案再放回原來的序列中。include include include include typedef struct node node,list voi...

排序演算法之桶排序

桶排序 bucket sort 或所謂的箱排序,是乙個排序演算法,工作的原理是將陣列分到有限數量的桶子裡。每個桶子再個別排序 有可能再使用別的排序演算法或是以遞迴方式繼續使用桶排序進行排序 根據最大值最小值建立多個桶,確定各個桶之間的跨度,然後遍歷原始數列,把各元素放到對應的桶中,先是每個桶內的元素...