题解 | #争夺前五名#

争夺前五名

https://www.nowcoder.com/practice/cd052308a1c44a88ad00255f312c3e14

#include <stdio.h>
void QuickSort(int* a, int left, int right)
{
    if (left >= right)
        return;
    int povit = right;
    int key = a[povit];
    int begin = left;
    int end = right;
    while (end > begin)
    { //左找小右边找大
        while (end > begin && key <= a[begin])//左
            begin++;
        a[povit] = a[begin];
        povit = begin;
        while (end > begin && key >= a[end])//右
            end--;
        a[povit] = a[end];
        povit = end;
    }
    povit = end;
    a[povit] = key;
    QuickSort(a, left, povit - 1);
    QuickSort(a, povit + 1, right);
}
int main()
{
    int n, i;
    scanf("%d", &n);
    int a[100] = { 0 };
    for (i = 0; i < n; i++)
    {
        scanf("%d", &a[i]);
    }
    QuickSort(a, 0, n - 1);
    for (i = 0; i < 5; i++)
    {
        printf("%d ", a[i]);
    }
    return 0;
}

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务