排序演算法 桶排序

2021-10-01 19:21:34 字數 793 閱讀 2270

桶排序是乙個在時間複雜度和空間複雜度十分極端的演算法,它的時間複雜度可以達到o(n

)o(n)

o(n)

,但是空間複雜度確是十分的高,這個高取決於陣列中最大的數。即最大的數是多少,就需要開闢多少的空間,當然這個說法只對於普通的桶排序來說的,對於有些使用鍊錶或者桶排序+插入排序的做法,就各有情況了。

做法其實十分的簡單,程式中開闢乙個籠罩陣列數值範圍的陣列,這個陣列中的每個數都被叫做桶,然後遍歷需要排序的陣列,把陣列中的數放入對應的桶中,比如3就放進3號桶,666就放進666號桶,666666就放進666666號桶,最終桶所記錄的是桶中數的數量。最後遍歷桶,依次取出桶中的數,自然取出的整體就是乙個有序的陣列。

這個演算法的應用場景其實十分的多,假設全國有1個億的高考考生,我們需要對這1個億的考生的分數進行排序。這裡不管是用快排還是基數排序,其實在桶排序面前都不夠看。我們只需開闢乙個【0,750】的空間,然後直接遍歷考生資訊,依照分數,把考生資訊放入對應的桶裡,最後遍歷一下(750-0+1)個桶,就能對這1個億的考生完成分數的排序。

class

solution

~solution()

vector<

int>

sortarray

(vector<

int>

& nums)

int index =0;

for(

int val =

0; val <= maxsize;

++val)

}return nums;}}

;

排序演算法 桶排序

桶排序 bucket sort 或所謂的箱排序,是乙個排序演算法,工作的原理是將陣列分到有限數量的桶子裡。每個桶子再個別排序 有可能再使用別的排序演算法或是以遞迴方式繼續使用桶排序進行排序 桶排序是鴿巢排序的一種歸納結果。當要被排序的陣列內的數值是均勻分配的時候,桶排序使用線性時間 n 但桶排序並不...

排序演算法 桶排序

2009 12 02 12 01 2817人閱讀 桶排序 bucket sort 或所謂的箱排序,是乙個排序演算法,工作的原理是將陣列分到有限數量的桶子裡。每個桶子再個別排序 有可能再使用別的排序演算法或是以遞迴方式繼續使用桶排序進行排序 桶排序是鴿巢排序的一種歸納結果。當要被排序的陣列內的數值是均...

排序演算法 桶排序

桶排序 bucket sort 或所謂的箱排序的原理是將陣列分到有限數量的桶子裡,然後對每個桶子再分別排序 有可能再使用別的排序演算法或是以遞迴方式繼續使用桶排序進行排序 最後將各個桶中的資料有序的合併起來。排序過程 假設待排序的一組數統一的分布在乙個範圍中,並將這一範圍劃分成幾個子範圍,也就是桶 ...