桶排序 (bucket sort)或所謂的箱排序的原理是將陣列分到有限數量的桶子裡,然後對每個桶子再分別排序(有可能再使用別的排序演算法或是以遞迴方式繼續使用桶排序進行排序),最後將各個桶中的資料有序的合併起來。
排序過程:
假設待排序的一組數統一的分布在乙個範圍中,並將這一範圍劃分成幾個子範圍,也就是桶
將待排序的一組數,分檔規入這些子桶,並將桶中的資料進行排序
將各個桶中的資料有序的合併起來
分部動畫
#include
#include
#define size 100
void bucket_sort(unsigned *, int);//桶排序函式的原型
void print(unsigned *, int);//列印函式的原型
int main8()
void bucket_sort(unsigned * arr, int len)
//釋放動態記憶體
for (i = 0; i < 10; ++i)
free(buckets[i]);
}void print(unsigned * arr, int len)
}
無聊時總結總結演算法之01遞迴
1 階乘 n n n 1 n 2 1 n 0 first problem 階乘n int jiecheng int n 2 河內塔問題 second problem 河內塔問題 1 把1座上 n 1 個盤子借助3座移到2座。2 把1座上第n個盤子移動3座。3 把2座上 n 1 個盤子借助1座移動3座...
無聊時總結總結演算法之07堆排序
二叉堆的定義 二叉堆是完全二叉樹或者是近似完全二叉樹。二叉堆滿足二個特性 1 父結點的鍵值總是大於或等於 小於或等於 任何乙個子節點的鍵值。2 每個結點的左子樹和右子樹都是乙個二叉堆 都是最大堆或最小堆 當父結點的鍵值總是大於或等於任何乙個子節點的鍵值時為最大堆。當父結點的鍵值總是小於或等於任何乙個...
面試總結 演算法篇
leetcode是經同學介紹的 據說有很大一部分演算法面試題都在leetcode的題庫中,甚至是完全一樣,既然想好要學點什麼就要一點點慢慢的啃吧。題目涉及別家 版權,就不在這裡說什麼了,本來還想每日一刷讓大家幫忙做個監督,估計不太合適了。為了更好的自己,加油!用了三天左右空餘時間,把sql簡單刷了一...