演算法設計周記(三) 桶排序

2021-08-08 16:56:09 字數 566 閱讀 8323

問題需要給一組雜亂無章的0,1,2排序,要求不使用庫函式,並且只使用常量空間。在此基礎上我立即想到的方案是採用桶排序,具體實現如下:

public:

void sortcolors(vector& nums) ;

vector::iterator it;

for (it = nums.begin(); it != nums.end(); it++)

}nums.clear();

for (int i = 0; i < 3; i++) }};

利用乙個長度為3byte的陣列儲存0,1,2的個數,最後再按順序將元素逐一寫回原陣列即可。

桶排序適用於給重複元素較多的陣列排序,與這題的情形十分契合。使用的額外空間為常量,複雜度為o(1),整個演算法只需要對陣列進行兩次遍歷,時間複雜度為o(n),是比較優良的解法。

排序演算法 桶排序

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

排序演算法 桶排序

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

排序演算法 桶排序

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