桶排序就是把最大值和最小值之間的數進行瓜分,例如分成 10 個區間,10個區間對應10個桶,我們把各元素放到對應區間的桶中去,再對每個桶中的數進行排序,可以採用歸併排序,也可以採用快速排序之類的。
之後每個桶裡面的資料就是有序的了,我們在進行合併彙總。
為方便理解我還準備了:
//和優化版本的計數排序一樣,弄乙個大小為 min 的偏移值
int d = max - min;
//建立 d / 5 + 1 個桶,第 i 桶存放 5*i ~ 5*i+5-1範圍的數
int bucketnum = d /5+
1;arraylist
> bucketlist =
newarraylist
<
>
(bucketnum)
;//初始化桶
for(
int i =
0; i < bucketnum; i++
)//遍歷原陣列,將每個元素放入桶中
for(
int i =
0; i < n; i++
)//對桶內的元素進行排序,我這裡採用系統自帶的排序工具
for(
int i =
0; i < bucketnum; i++
)//把每個桶排序好的資料進行合併彙總放回原陣列
int k =0;
for(
int i =
0; i < bucketnum; i++)}
return arr;
}}
排序演算法 桶排序
桶排序 bucket sort 或所謂的箱排序,是乙個排序演算法,工作的原理是將陣列分到有限數量的桶子裡。每個桶子再個別排序 有可能再使用別的排序演算法或是以遞迴方式繼續使用桶排序進行排序 桶排序是鴿巢排序的一種歸納結果。當要被排序的陣列內的數值是均勻分配的時候,桶排序使用線性時間 n 但桶排序並不...
排序演算法 桶排序
2009 12 02 12 01 2817人閱讀 桶排序 bucket sort 或所謂的箱排序,是乙個排序演算法,工作的原理是將陣列分到有限數量的桶子裡。每個桶子再個別排序 有可能再使用別的排序演算法或是以遞迴方式繼續使用桶排序進行排序 桶排序是鴿巢排序的一種歸納結果。當要被排序的陣列內的數值是均...
排序演算法 桶排序
桶排序 bucket sort 或所謂的箱排序的原理是將陣列分到有限數量的桶子裡,然後對每個桶子再分別排序 有可能再使用別的排序演算法或是以遞迴方式繼續使用桶排序進行排序 最後將各個桶中的資料有序的合併起來。排序過程 假設待排序的一組數統一的分布在乙個範圍中,並將這一範圍劃分成幾個子範圍,也就是桶 ...