十大排序演算法之桶排序(BucketSort)

2021-10-03 19:47:32 字數 873 閱讀 3422

一、前言

資料結構與演算法,順便刷leetcode,無意間發現了乙個 我覺得講解的比較好的網頁,並且會拿leetcode裡面的題目當做例題,如有需要,奉上**:五分鐘學演算法

二、演算法實現的步驟

有限個數字m,每個數字的大小都在1與n之間,則我們可以假設有n個桶,遍歷m個數字,將其存入對應的桶中(如數字的值為3,就存入3號桶,桶的值對應存入數字的個數。

三、演算法的圖示(**於網路)

四、**

void

bucketsort

(vector<

int>

& dp)

{int length=dp.

size()

; vector<

int>

buckets

(length,0)

;for

(int i=

0;i++i)

buckets[vec[i]]++

;int index=0;

for(

int i=

0;i++i)

for(

int j=

0;j;j++

) vec[index++

]=i;

五、演算法的性質穩定性:相同元素的相對位置不變,故穩定

空間複雜度:o(n+k)。

時間複雜度:o(n+k)。

十大排序演算法 桶排序 python版

把陣列a劃分為n個大小相同子區間 桶 每個子區間各自排序,最後合併。桶排序要求資料的分布必須均勻,不然可能會失效。計數排序是桶排序的一種特殊情況,可以把計數排序當成每個桶裡只有乙個元素的情況 1 設定乙個定量的陣列當作空桶 2 遍歷輸入資料,並且把資料乙個乙個放到對應的桶裡去 3 對每個不是空的桶進...

十大排序演算法 桶排序(C語言)

桶排序 bucket sort 或所謂的箱排序,是乙個排序演算法,工作的原理是將陣列分到有限數量的桶子裡。每個桶子再個別排序 有可能再使用別的排序演算法或是以遞迴方式繼續使用桶排序進行排序 把待排序序列中的資料根據函式對映方法分配到若干個桶中,在分別對各個桶進行排序,最後依次按順序取出桶中的資料。適...

十大排序演算法之選擇排序

選擇排序也是一種o n 2 時間複雜度的排序演算法,選擇排序是每一次迴圈都將找到最小值,依次將最小值 次小值分別從左至右進行排序。以下是具體實現過程,其中使用的工具類這篇部落格已經給出,import cn.zjut.util.sorttestutil public class selectsort ...