//1,桶排序比较浪费空间,但是速度很快;
//2,有些问题处理不了,例如,学生分数出现9.5,就无法排序
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct people{
int score;
char name[10];
};
struct rank{
struct people student[4];//一共有四个学生
int num;//相同分数学生的数目
};
int main(int argc, char *argv[])
{
struct people student[4];
struct rank result[11];//总分一共10分,从0——10一共11一个数
int i,j;
j=0;
//结构体一开始都初始化为零,注意初始化方法
memset(result,0,sizeof(struct rank)*11);
for(i = 0;i < 4;i++)
{
printf("Please enter the name:");
scanf("%s",student[i].name);
printf("Please enter the score:");
scanf("%d",&student[i].score);
//桶排序的关键 ,把对应的分数放入对应的桶;
result[student[i].score].student[result[student[i].score].num]= student[i];
result[student[i].score].num++;
}
//由到高打印成绩
for(i = 0 ;i < 11 ;i++ )
{
if(result[i].num != 0)
{
for(j = 0;j < result[i].num ;j++)
{
printf(" name: %s score:%d\n",result[i].student[j].name,
result[i].student[j].score);
}
}
}
return 0;
}