**:
將待排序陣列按照大小分別放入n個桶,然後對各桶內資料排序,之後合併。減小總的每次排序的規模,用空間換時間。
元素值域的劃分,也就是元素到桶的對映規則。對映規則需要盡量保證元素分散均勻,否則當所有資料集中在同乙個桶中時,桶排序失效。
排序演算法的選擇。桶排序演算法的複雜度和穩定性,都根據選擇的排序演算法不同而不同。
上面兩個鏈結中給出的對映規則不同:其中乙個是min/10作為間隔大小,另乙個是:(max - min) / arr.length + 1。所以可以根據資料的情況來選擇不同的對映規則。
o(n),//還有待我分析
publicstatic
void bucketsort(int
arr)
//計算桶的數量
int bucketnum = (max - min) / arr.length + 1
; arraylist
> bucketarr = new arraylist<>(bucketnum);
for(int i = 0; i < bucketnum; i++)
//將每個元素放入桶
for(int i = 0; i < arr.length; i++)
//對每個桶進行排序
for(int i = 0; i < bucketarr.size(); i++)
//將桶中的元素賦值到原序列
int index = 0
;
for(int i = 0; i < bucketarr.size(); i++)
} }
學習日記 桶排序
最近有學習基數排序 桶排序 先寫下簡單的一次性桶排序。方法 排序陣列a,假象桶bucket,臨時存放陣列tmp 需要方法tmp a.clone 1.複製陣列 tmp a.clone 2.設定桶的長度bucket.length a.max a.min 1 3.將數字放入桶中並記錄數字放入次數 4.調整...
排序 桶排序
首先,桶排序是一種簡單並且執行快的一種排序。第一步,對五個數進行排序。程式如下 include using namespace std int main 首先對陣列進行歸零 for int j 1 j 5 j 將輸入的數的個數存入陣列中。for int k 1 k 10 k 執行原理 桶排序,就是先...
演算法學習03 桶排序
首先遍歷陣列,找到最大值與最小值,設定乙個長度為最大值 最小值 1的陣列,再次遍歷這個陣列,以當前值 最小值作為下標,將該下標的計數器增1。掃瞄一遍計數器陣列,按順序將值收集起來。舉個例子 nums 2,4,3,4,7 遍歷一次陣列,找到陣列元素的最小值與最大值分別為2和7,那麼我們設定乙個長度為7...