题解 | #成绩排序#
成绩排序
https://www.nowcoder.com/practice/8e400fd9905747e4acc2aeed7240978b
#include <stdio.h>
#include <stdlib.h>
/*快速排序法*/
typedef struct Student {
int score;
char name[32];
} student;
int inc(const void* a, const void* b) {
return (**(student**)a).score - (**(student**)b).score;
}
int dcr(const void* a, const void* b) {
return (**(student**)b).score - (**(student**)a).score;
}
int main() {
int i, j, dir, nums;
student** pStud, tempstud;
scanf("%d", &nums);
pStud = (student**)malloc(sizeof(student*)*nums);
scanf("%d", &dir);
for (i = 0; i < nums; i++) {
pStud[i] = (student*)malloc(sizeof(student) * 1);
scanf("%s %d", (pStud[i]->name), &(pStud[i]->score));
}
if(dir)
qsort(pStud,nums,sizeof(student *),inc);
else
qsort(pStud,nums,sizeof(student *),dcr);
for (i = 0; i < nums; i++) {
printf("%s %d\r\n", pStud[i]->name, pStud[i]->score);
}
for(i=0;i<nums;i++)
free(pStud[i]);
free(pStud);
return 0;
}
