这里使用了快排,其实是不稳定的,可以在sort函数里比较先后次序,即数组下标的大小。
#include<stdio.h>
#include<stdlib.h>
typedef struct{
char name[20];
int score;
}student;
int sort1(const void *a,const void *b){
return ((student *)a)->score-((student *)b)->score;
}
int sort2(const void *a,const void *b){
return ((student *)b)->score-((student *)a)->score;
}
int main(){
int n,flag;
while(scanf("%d%d",&n,&flag)!=EOF){
student *s = malloc(n*sizeof(student));
for(int i=0;i<n;i++){
scanf("%s%d",s[i].name,&s[i].score);
}
if(flag)
qsort(s,n,sizeof(student),sort1);
else
qsort(s,n,sizeof(student),sort2);
for(int i=0;i<n;i++){
printf("%s %d\n",s[i].name,s[i].score);
}
}
}
网友评论