排序演算法之桶排序

2021-09-21 02:20:53 字數 1399 閱讀 4723

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

一、基本思想桶排序,顧名思義,會用到桶。核心思想就是將要排序的陣列分到幾個有序的桶中,每個桶裡的資料再單獨進行排序。桶內排序完之後,再把資料從桶中依次取出來,組成的序列就是有序的了。

二、過程

三、總結

進行桶排序有以下幾點需要注意:

**:

/**

* 桶排序

* @author: han-ylun

* @date 2019/4/25

* @version 1.0

*/public

class

bucketsort

else

if(arr[i]

< min)

}//通過最大最小值獲取桶的個數(可根據實際生產自定義演算法計算桶的個數)

num =

(max - min +1)

/10+1

;//儲存所有桶

list

> buckets =

newarraylist

>

(num)

;//初始化每個桶

for( i =

0; i < num; i++

)for

(int data : arr)

pos =0;

//對每個桶進行快排,然後加排序後的元素重新放回陣列中

for( i =

0; i < num; i++

) quicksort.

quicksortinternally

(temp,

0,size-1)

;for

(j =

0; j < size; j++)}

}/**

* 根據陣列計算對應的桶

* @param data

* @return

*/private

static

intgetbucketindex

(int data)

}

四、桶排序的優化五、結論

排序演算法之桶排序

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

排序演算法之桶排序

桶排序 bucket sort 或所謂的箱排序,是乙個排序演算法,工作的原理是將陣列分到有限數量的桶子裡。每個桶子再個別排序 有可能再使用別的排序演算法或是以遞迴方式繼續使用桶排序進行排序 根據最大值最小值建立多個桶,確定各個桶之間的跨度,然後遍歷原始數列,把各元素放到對應的桶中,先是每個桶內的元素...

排序演算法之桶排序

桶排序的基本思想就是待排序的資料分別放入不同的桶中,這些桶之間其實是有序的。然後在這些桶中將分在裡面的資料進行排序。最終就完成了整個序列的排序。假設將乙個均勻分布在區間 0,200 的一些待排序的序列,分成20個桶中。每個桶的大小都是10。分別存資料 0,9 10,19 20,29 190,199 ...