桶排序
我們創(chuàng)建一個(gè)一個(gè)數(shù)組,數(shù)組內(nèi)存放的內(nèi)容是我們對該數(shù)組對應(yīng)的數(shù)字的計(jì)數(shù)隘道,然后我們按照計(jì)算對數(shù)組的對應(yīng)的值進(jìn)行輸出症歇,這樣我們就能輸入的值郎笆,進(jìn)行排序。因?yàn)槲覀兊耐笆桥藕眯蛄械摹?/p>
#include <stdio.h>
int main(){
int a[11],i,t,j;
for (i=0;i<=10;i++){//創(chuàng)建一個(gè)數(shù)組忘晤,給這個(gè)數(shù)組初始化宛蚓,每個(gè)位置都賦值為0
a[i]=0;
}
for (i=1;i<=5;i++){//從鍵盤錄入5個(gè)數(shù),對應(yīng)數(shù)字的筒设塔,里面存的數(shù)字遞增一個(gè)數(shù)字
scanf("%d",&t);
a[t]++;
}
for (i=0;i<=11;i++)//開始掃描這個(gè)數(shù)組凄吏,桶內(nèi)遞增幾個(gè)數(shù)字,將這個(gè)數(shù)字闰蛔,按次數(shù)輸出
for (j=1; j<=a[i]; j++)
printf("%d",i);
getchar();
getchar();
return 0;
}
桶排序的缺點(diǎn):
- 我們假如要排列的數(shù)字較大的時(shí)候痕钢,我們就需要這個(gè)數(shù)字對應(yīng)的桶
- 我們不可以對小數(shù)進(jìn)行排序
- 只能輸出對數(shù)字的排序,不能輸出對數(shù)組以外的信息進(jìn)行輸出
冒泡排序
冒泡排序就是對一組數(shù)組序六,進(jìn)行前后值的比較任连,比如我們需要對數(shù)組進(jìn)行從小到大的排序的時(shí)候,我們只需要從頭開始例诀,將前后值進(jìn)行比較课梳,相比較之后,大的值排在后面余佃,依次進(jìn)行就可以達(dá)到目的。我們有n個(gè)數(shù)字的時(shí)候跨算,就會(huì)進(jìn)行n-1趟爆土,每次都是n-i次交換,i是第幾趟诸蚕,因?yàn)槲覀兣判蜻^一趟的話步势,就不需要?jiǎng)幼詈笠粋€(gè)值,排序過兩趟的話就不需要對最后面的兩個(gè)值進(jìn)行排序背犯。
#include <stdio.h>
int main(){
int a[100],n,i,j,t;
scanf("%d",&n);
for (i=1; i<=n; i++) {
scanf("%d",&a[i]);
}
for (i=1; i<=n-1; i++) {
for (j=1; j<=n-i; j++) {
if (a[j]<a[j+1]) {
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
}
for (i=1; i<=n; i++) {
printf("%d",a[i]);
}
getchar();
getchar();
return 0;
}