算法-桶排序(簡化版)

今天開始研究算法,網(wǎng)上找了本書《啊哈,算法》,準(zhǔn)備把這本有趣的書研究個透徹,有些圖是引用書中的圖,在此聲明一下。不說了,上第一種算法:桶排序


int main(int argc, const char * argv[]) {

@autoreleasepool {

//排序法

int a[11],t;

for (int i=0; i<=10; i++) {// 初始化數(shù)組元素,都為0,可把每個元素當(dāng)做一個桶,且桶里都為0

a[i] = 0;

}

for (int i=1; i<=5; i++) {//輸入五個[0,10]的數(shù),把輸入的數(shù)分別放入對應(yīng)的桶中

printf("請輸入第%d個數(shù):",i);

scanf("%d",&t);

a[t]++;

}

printf("由小到大排序后:");

for (int i=0; i<=10; i++) {//依次判斷a[0]-a[10]

for (int j=1; j<=a[i]; j++) {//出現(xiàn)幾次就打印幾次

printf("%d ",i);

}

}

printf("\n由大到小排序后:");

for (int i=10; i>=0; i--) {

for (int j=1; j<=a[i]; j++) {

printf("%d ",i);

}

}

printf("\n");

/*

請輸入第1個數(shù):5

請輸入第2個數(shù):4

請輸入第3個數(shù):9

請輸入第4個數(shù):7

請輸入第5個數(shù):2

由小到大排序后:2 4 5 7 9

由大到小排序后:9 7 5 4 2

*/

}

return 0;

}

小結(jié):

優(yōu)點:速度快

缺點:占內(nèi)存空間,假如需要對千萬個數(shù)進(jìn)行排序,那就要申請千萬個變量,又或者需要給199999、323、1、89、101進(jìn)行排序,那就要定義int a[200000]了,浪費(fèi)空間,再者如果去對1.2,2.3,10.4,3.9,1.8進(jìn)行排序,這個排序法就無法排序了。

故此算法適合小范圍整數(shù)排序。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容