求助!!
  • 板块学术版
  • 楼主ww4445
  • 当前回复10
  • 已保存回复10
  • 发布时间2021/2/25 21:39
  • 上次更新2023/11/5 02:42:19
查看原帖
求助!!
406728
ww4445楼主2021/2/25 21:39

如图,都是快排模板,但为什么第二个正常,第一个就只输出乱码呢?

#include<iostream>     //左
using namespace std;

int a[100010],n;

void qui(int a[],int l,int r){
    if(r<=l) return;
    int i=l,j=r,mid=a[(l+j)/2];
    while(i<j){
        while(a[i]<mid) i++;
        while(a[j]>mid) j--;
        if(i<=j){
            swap(a[i],a[j]);
            i++;
            j--;
        }
    }
    qui(a,l,j);
    qui(a,i,r);
}
int main(){
    scanf("%d",&n);
    for(int i=0;i<n;i++){
        scanf("%d",&a[i]);
    }
    qui(a,0,n-1);
    for(int i=0;i<n;i++){
        printf("%d ",a[i]);
    }
    printf("\n");
    return 0;
}
#include<iostream>     //右
using namespace std;

int a[100010];

void qui (int a[],int l,int r){
    int flag = a[(l + r)/2],i = l,j = r;
    while (i <= j){
        while (a[i] < flag) i++;
        while (a[j] > flag) j--;
        if (i <= j) {
            swap(a[j], a[i]);
            i++;j--;
        }
    }
    if (j > l) qui(a, l, j);
    if (i < r) qui(a, i, r);
}
int main (){
    int nn;
    cin >> nn;
    for(int i = 0; i < nn; i++) {
        cin >> a[i];
    }
    qui(a, 0, nn-1);
    for(int i=0; i < nn; i++) {
        cout << a[i] << ' ';
    }
}
2021/2/25 21:39
加载中...