排序演算法之桶排序

2021-09-23 17:53:58 字數 973 閱讀 7134

桶排序的基本思想就是待排序的資料分別放入不同的桶中,這些桶之間其實是有序的。然後在這些桶中將分在裡面的資料進行排序。最終就完成了整個序列的排序。

假設將乙個均勻分布在區間[0,200)的一些待排序的序列,分成20個桶中。每個桶的大小都是10。分別存資料[0, 9), [10, 19), [20, 29) …. [190, 199),將待排序陣列中的資料分別存進這些桶中,然後分別對桶中的元素進行排序,這樣就完成了排序。

比如有資料,將這些資料在區間[0, 100)中,將這些資料分進十個桶中,然後在這些桶中對其中的資料進行排序。如下圖所示:

其實桶排序最終構建的結構是乙個雜湊表。

typedef

int datatype;

//numberlimits是資料區間的最大值,如果傳入200,其區間就是[0, 200)

int bucketsort(datatype *array, int size, int numberlimits)

//給指標陣列temp分配空間

temp = (node **)calloc(numberlimits / 10 + 1, sizeof(node *));

if(temp == null)

for(i = 0; i < size; i++)

s->data = array[i];

s->next = null;

if(p == null)//如果最開始這個桶為空,則直接將這個結點存入

else else

}

}//根據這些桶重新給陣列賦值,最終的結果就是乙個有序的序列

for(i = 0, j = 0; i < numberlimits / 10 + 1; i++)

}return

0;}

排序演算法之桶排序

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

排序演算法之桶排序

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

排序演算法之桶排序

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