排序演算法之桶式排序

2021-06-22 18:54:11 字數 438 閱讀 9582

任何只是用比較的一般/通用排序演算法,最壞時間複雜度都大於等於nlogn

但是,在某些特殊條件限制下,以線性時間排序仍然是可能的

桶式排序,資料必須只有小於m的正整數組成。最壞時間複雜度n+m

演算法描述:

//使用乙個大小為m的count陣列(count有m個桶),初始化為0;

//掃瞄一遍待排序序列,當讀pdata[i]時,將count[pdata[i]]加一;

//掃瞄陣列count,列印出排序後的表。

由於比較簡單,這裡只給出c++實現,不在給出python實現

void bucketsort(int *pdata,int n) //假設pdata元素為小於100的正整數

{ int count[100],i;

memset(count,0,sizeof(count));

for(i=0;i

演算法 桶式排序

桶式排序 bucket sort 是一種快速排序的演算法。如果我們有n個整數,範圍從1到m 或者是從0到m 1 對這n個整數進行排序。1 首先我們需要乙個放置所有桶的陣列bucketarray,陣列長度為m 1,初始化每個單元為0。2 遍歷n個整數,當讀到i時,使bucketarray i 加1。3...

排序演算法之桶排序

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

排序演算法之桶排序

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