今天開始研究算法惊来,網(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)點(diǎn):速度快
缺點(diǎn):占內(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ù)排序。