求助,为什么我的快速排序老是排不对
查看原帖
求助,为什么我的快速排序老是排不对
739437
notwhy楼主2022/7/15 02:23

我都是照着老师的模板写的,不知道为什么老是会有元素被覆盖

#include <stdio.h>
void Qsort(int a[], int low, int high);
int part(int a[], int low, int high);
int main()
{
    int a[10] = {0};
    int n, k;
    scanf("%d %d", &n, &k);
    for(int i = 1; i <= n; i++)
    {
        scanf("%d", &a[i]);
    }
    Qsort(a, 1, n);
    printf("%d", a[k + 1]);
    return 0;
}

void Qsort(int a[], int low, int high)
{
    if(low < high)
    {
        int pivo;
        pivo = part(a, low, high);
        Qsort(a, low, pivo - 1);
        Qsort(a, pivo + 1, high);
    }
}

int part(int a[], int low, int high)
{
    int mid = a[1];
    while (low < high)
    {
        while (low < high && a[high] >= mid)
        {
            high--;
        }
        a[low] = a[high];
        while (low < high && a[low] <= mid)
        {
            low++;
        }
        a[high] = a[low];
    }
    a[low] = mid;
    return low;
}

比如样例这个

4 3 2 1 5
会被排成
1 1 2 4 5
-----------:
2022/7/15 02:23
加载中...