十七 桶排序 Bucket Sort

2021-09-24 13:31:08 字數 939 閱讀 1771

先說下桶排序的原理,其實就是先構造乙個空的陣列,所有元素初始化為0。然後待排序陣列進行遍歷,把該元素的值在對應桶的陣列的下標的位置的元素的值加一,就可以完成排序。

對於桶排序的弊端很嚴重,比如我們待排序的陣列有重複元素和負數那他的時間複雜度都為o(m+n),當資料足夠多的時候我們的系統是承受不了的,但對於沒有重複元素,也沒有負數,那它的時間複雜度為o(n),這個時間是在我們接受的範圍內。所以說,具體針對桶排序的應用請依據實際情況進行選擇。

本**演示的是正負數以及重複的整數的排序

#include #define bucketsize 999 //設定桶的大小,這裡接受最大的數為999-1

//對桶進行初始化

void initbucket(int *bucketarray)

} //桶式排序, 排序前陣列, 陣列長度

void bucksort(int *beforearray, int len)

} else

}} int ptr = 0;

for(int j = tmpbyneg; j >= 0; j--)

else if(bucketarraybyneg[j] > 1)

}} for(int j = 0; j <= tmpbypos; j++)

else if(bucketarraybypos[j] > 1)

} }}

int main(void)

; int len = sizeof(beforearray)/sizeof(beforearray[0]);

bucksort(beforearray, len);

for(int i = 0; i < len; i++)

printf("\n");

return 0;

}

排序 桶排序(Bucket sort)

桶排序是將待排序集合中處於同乙個值域的元素存入同乙個桶中,也就是根據元素值特性將集合拆分為多個區域,則拆分後形成的多個桶,從值域上看是處於有序狀態的。對每個桶中元素進行排序,則所有桶中元素構成的集合是已排序的。桶排序的思想近乎徹底的分治思想。演算法的過程描述如下 根據待排序集合中最大元素和最小元素的...

小白必學排序演算法(七) 桶排序

桶排序是計數排序的公升級版。它利用了函式的對映關係,高效與否的關鍵就在於這個對映函式的確定。理解 桶排序是計數排序的變種,把計數排序中相鄰的m個 小桶 放到乙個 大桶 中,在分完桶後,對每個桶進行排序 一般用快排 然後合併成最後的結果。桶排序是穩定演算法。基本思想 桶排序的思想近乎徹底的分治思想。效...

經典排序演算法 桶排序Bucket sort

經典排序演算法 桶排序bucket sort 補充說明三點 1,桶排序是穩定的 2,桶排序是常見排序裡最快的一種,比快排還要快 大多數情況下 3,桶排序非常快,但是同時也非常耗空間,基本上是最耗空間的一種排序演算法 我自己的理解哈,可能與網上說的有一些出入,大體都是同樣的原理 無序陣列有個要求,就是...