题解 | #成绩排序#

成绩排序

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

//用冒泡法排序相等的单元就可以保持原顺序
#include <stdio.h>
#include <string.h>

int main() {
    int n, flag;
    scanf("%d\n%d", &n, &flag);
    char name[200][20];
    int grade[200];
    for (int i = 0; i < n; i++) {
        scanf("%s %d\n", name[i], &grade[i]);
        // printf("%s %d\n",name[i], grade[i]);
    }

    int t;
    char temp[20];
    if (flag == 0) {
        for (int i = 0; i < n - 1; i++) {
            //printf("%s %d\n",name[i], grade[i]);
            for (int j = 0; j < n-1-i; j++) {
                if (grade[j] < grade[j+1]) {
                    t = grade[j];
                    grade[j] = grade[j+1];
                    grade[j+1] = t;

                    strcpy(temp, name[j]);
                    strcpy(name[j], name[j+1]);
                    strcpy(name[j+1], temp);
                    //printf("%s %d\n",name[i], grade[i]);
                }
            }
        }
    }

    if (flag == 1) {
        for (int i = 0; i < n - 1; i++) {
            for (int j = 0; j < n-1-i; j++) {
                if (grade[j] > grade[j+1]) {
                    t = grade[j];
                    grade[j] = grade[j+1];
                    grade[j+1] = t;

                    strcpy(temp, name[j]);
                    strcpy(name[j], name[j+1]);
                    strcpy(name[j+1], temp);
                }
            }
        }
    }

    for (int i = 0; i < n; i++) {

    }


    for (int i = 0; i < n; i++) {
        printf("%s %d\n", name[i], grade[i]);
    }
    return 0;
}

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

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