一、排序问题描述
计算机随机输入这5个数。排序5个同学的分数,按照从小到大的顺序。这5个同学的分数分别是5,3,5,2,8。
二、思路解析及桶排序
1.借助一维数组。
三、代码复现
#include<stdio.h>
int main(){
int a[11],i,j,t;
for(i=0;i<=10;i++){
a[i]=0;//初始化为0;
}
for(i=1;i<=5;i++){
//循环读入5个数
scanf("%d",&t);//把每一个数读入变量t中
a[t]++;//进行计数
}
for(i=0;i<=10;i++){
//依次判断a[0] -a[10]
for(j=1;j<=a[i];j++){
//出现几次就打印几次
printf("%d",i);
}
}
getchar();getchar();
//这里getchar();用来暂停程序,以便查看程序输出的内容
//也可以用system(“pause");等来代替
return 0;
}
输入5个数,enter 就可以输出排序结果。
四、时间复杂度分析
时间复杂度就是O(M+N)
M表示桶的数量,N表示要排序的数的数量。
冒泡排序非常浪费空间。
冒泡排序更适合整数而不是小数排序。