一、對輸入的數據進行排序
#include<stdio.h>
int main(){
int a[11];
//得分從0~10
int i,j,t;
for(int i=0;i<=10;i++){
a[i]=0;
}
//對數組進行初始化
for(int i=0;i<5;i++){
scanf("%d",&t);
a[t]++;
//若是得分爲5分,則a[4]=1,這是用來計算某一個得分出現的次數
}
for(int i=0;i<=10;i++)
for(int j=1;j<=a[i];j++){
printf("%d",i);
//打印出對應的分數,即數組中第幾個數字
}
getchar();
getchar();
//用來暫停程序,以便查看程序的輸出(這時不會出現「按任意鍵退出」的字樣)
//也能夠採用system(「pause」);可是須要引入頭文件#include<stdlib.h>
return 0;
}
#上述程序是按照遞增順序排列,若是按照遞減順序排列,則只需修改以下代碼:
for(int i=10;i>=0;i--)
for(int j=1;j<=a[i];j++){
printf("%d",i);
}
二、輸入n個數據,對其排序
#include<stdio.h>
int main(){
int book[1001];
int i,j,n,t;
for(int i=0;i<=1000;i++){
book[i]=0;
}
scanf("%d",&n);
//限定輸入的個數
for(int i=0;i<n;i++){
scanf("%d",&t);
book[t]++;
}
for(int i=0;i<=1000;i++)
for(int j=1;j<=book[i];j++){
printf("%d ",i);
//若是須要輸出結果之間有間隔,只須要在輸出的佔位符後面加上空格便可
}
getchar();
getchar();
return 0;
}
注:這兩個能夠稱之爲桶排序,可是實際上桶排序要比這個複雜。
其缺點在於:浪費空間,上述2中須要申請1001個內存空間;不能進行小數的排序。
三、分析
(1)時間複雜度
(2)空間複雜度
(3)使用狀況