简化版桶排序
程序员文章站
2022-03-03 08:40:47
...
简化版桶排序
- 用一个一维数组就可以解决的数字排序问题
- 申请一个int数组。数组要求:有多少数就申请多大的数组,例如10个数排序就要int[10]数组;
- 将数组内每个元素都初始化为0;
- 读取输入的数i,放在int[i]中,如1放在int[1]中,5放在int[5]中,同一个数出现多次就在int[]数组中进行++操作(存储每个数的次数)
- 按顺序打印数组中的数,其中每个数出现了几次就打印几次。如int[5]中存储的值为3,就打印5 5 5.
//对0-1000的整数进行排序,需要数组大小为1001.
#include <stdio.h>
int main(){
int book[1001],i,j,t,n;
//数组初始化为0
for(i=0;i<=1000;i++)
book[i]=0;
scanf("%d",&n); //输入一个数,代表对n个数进行排序
//读入键盘输入的n个数,进行桶排序
for(i=1;i<=n;i++){
scanf("%d",&t);
book[t]++; //对每个数出现的个数进行统计
}
for(i=1000;i>=0;i--){ //从大到小打印
for(j=0;j<=book[i];j++) //出现几次就打印几次
printf("%d",i);
}
return 0;
}
下一篇: 桶排序(最简单的排序算法)