题解 | #成绩排序#

成绩排序

https://www.nowcoder.com/practice/8e400fd9905747e4acc2aeed7240978b

#include <stdio.h>
#include <stdlib.h>

/*快速排序法,并用index变量保持排序稳定性*/
typedef struct Student {
    int index;
    int score;
    char name[32];
} student;

int inc(const void* a, const void* b) {
    int result = (**(student**)a).score - (**(student**)b).score;
    if(result==0)
        return (**(student**)a).index - (**(student**)b).index;
    else
        return result;
}

int dcr(const void* a, const void* b) {
    int result = (**(student**)b).score - (**(student**)a).score;
    if(result==0)
        return (**(student**)a).index - (**(student**)b).index;
    else
        return result;
}

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));
        pStud[i]->index=i;
    }

    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;
}

#成绩排序#
全部评论
点赞 回复 分享
发布于 2024-12-06 10:22 北京

相关推荐

屌丝逆袭咸鱼计划:心态摆好,man,晚点找早点找到最后都是为了提升自己好进正职,努力提升自己才是最关键的😤难道说现在找不到找的太晚了就炸了可以鸡鸡了吗😤早实习晚实习不都是为了以后多积累,大四学长有的秋招进的也不妨碍有的春招进,人生就这样
点赞 评论 收藏
分享
05-26 22:25
门头沟学院 Java
Java小肖:不会是想叫你过去把你打一顿吧,哈哈哈
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务