演算法分析之桶排序

2021-08-04 14:52:28 字數 859 閱讀 3444

桶排序示意圖(當然這裡只是簡單的示例,真正的桶排序比這個複雜):

維基百科介紹: 桶排序

1. 設定固定空桶數

2. 將資料放到對應的空桶中

3. 將每個不為空的桶進行排序

4. 拼接不為空的桶中的資料,得到結果

bucketsort

1. 將資料裝入桶,需要n次迴圈

2. 之後排序,需要m次迴圈

3. 假設使用比較先進的排序演算法,需要時間複雜度為o(n*logn)

4. 平均時間複雜度為線性的o(n+c),其中c=n*(logn-logm)

5. 最小時間複雜度o(n),此時 m=n

m個桶的額外空間,以及n個元素的額外空間,o(n+m)
一般來說桶排序是穩定的

1. 桶排序的優化需要從排序上下功夫,盡量做到如下兩點

2. n個數都符合均勻分布,每乙個桶中有n/m個資料

3. 盡量的增大桶的數量,極限情況下每個桶只能得到乙個資料,但是會增加空間複雜度

1. 桶排序是穩定的

2. 桶排序是常見排序裡最快的一種,比快排還要快…(大多數情況下)

3. 桶排序非常快,但是同時也非常耗空間,(基本上是最耗空間的一種排序演算法)

桶排序是乙個簡單快速的排序,需要新建乙個 大範圍的陣列,即buckets,因此桶排序有其侷限性,適合元素值集合並不大的情況。

演算法之桶排序

桶排序是計數排序的公升級版。它利用了函式的對映關係,高效與否的關鍵就在於這個對映函式的確定。桶排序 bucket sort 的工作的原理 假設輸入資料服從均勻分布,將資料分到有限數量的桶裡,每個桶再分別排序 有可能再使用別的排序演算法或是以遞迴方式繼續使用桶排序進行排 注意,如果遞迴使用桶排序為各個...

演算法之桶排序

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

排序演算法之桶排序

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