题解 | #成绩排序#

成绩排序

https://www.nowcoder.com/practice/3f27a0a5a59643a8abf0140b9a8cf1f7

#include <stdio.h>
int partition(double* A, double* B, int low, int high) {
    double pivot = A[low];
    int pivotpos = B[low];
    while (low < high) {
        while (low < high && A[high] >= pivot)high--;
        A[low] = A[high];
        B[low] = B[high];
        while (low < high && A[low] <= pivot)low++;
        A[high] = A[low];
        B[high] = B[low];
    }
    A[low] = pivot;
    B[low] = pivotpos;
    return low;
}
void quickSort(double* A, double* B, int low, int high) {
    if (low < high) {
        int pivotpos = partition(A, B, low, high);
        quickSort(A, B, low, pivotpos - 1);
        quickSort(A, B, pivotpos + 1, high);
    }
}
int main() {
    int i,N;
    scanf("%d",&N);
    double A[N],B[N];
    for(i=0;i<N;i++)
    {
        scanf("%lf %lf",&A[i],&B[i]);
        A[i]+=0.5-0.001*i;
        B[i]+=0.5-0.001*i;
    }
    quickSort(B, A, 0, N-1);
     for(i=0;i<N;i++)
    {
        printf("%.0f %.0f\n",A[i],B[i]);
    }
    
    return 0;
}

全部评论

相关推荐

10-28 10:48
已编辑
门头沟学院 Java
孩子我想要offer:发笔试后还没笔试把我挂了,然后邮箱一直让我测评没测,后面不知道干嘛又给我捞起来下轮笔试,做完测评笔试又挂了😅
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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