求助,二分快排,前三个结点错误(但是out和我的out是一致的)
查看原帖
求助,二分快排,前三个结点错误(但是out和我的out是一致的)
726777
wdAndLzl楼主2022/8/15 11:16

谢谢大佬,好人一生平安

#include <bits/stdc++.h>
using namespace std;

int n;
int a[1000001];

void qsort(int left,int right){
    if(left >= right){
        return;
    }

    int l = left;
    int r = right;
    int mid = (left + right)/2;

    while(left <= right){
        while(a[left] < a[mid]){
            left++;
        }
        while(a[right] > a[mid]){
            right--;
        }
        if(left <= right){
            swap(a[left],a[right]);
            left++;
            right--;
        }
    };

    qsort(l,right);
    qsort(left,r);
}

int main(){
    cin>>n;
    for(int i=0;i<n;i++){
        scanf("%d",&a[i]);
    }

    qsort(0,n-1);

    for(int j=0;j<n-1;j++){
        printf("%d ",a[j]);
    }
    printf("%d\n",a[n-1]);

    return 0;
}
2022/8/15 11:16
加载中...