qsort例子

2019-03-19  本文已影响0人  hdchieh

这里使用了快排,其实是不稳定的,可以在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);
        }
    }
     
}
上一篇 下一篇

猜你喜欢

热点阅读