桶排序
例:给班上五位同学的考试成绩排序,成绩分别是2,3,3,5,8(满分十分),将分数从大到小进行排序,排序后:8 5 3 3 2
解题思路:
1、首先申请一个大小为11的数组int a[11],初始化数组a[0]~a[10]为0,表示这些分数还没人得过。
2、开始处理得分情况:第一个人分数是5,将a[5]的值在原来的基础上加1,即a[5]=1
3、第二个人的得分情况是3分
4、以此类推,最后发现a[0]~a[10]的数值也就是没个分数出现的次数,接下来只需要打印出来就好了
代码实现:
#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);
a[t]++;//计数
}
for(i=10; i>=0; i--)//依次判断
for(j=1; j<=a[i]; j++)//打印
printf("%d",i);
getchar();//暂停程序
getchar();
return 0;
}