我裂开!
查看原帖
我裂开!
376481
Carrot_Rui楼主2021/2/3 09:52

这是什么回事?、

我兴致勃勃的敲了遍快排结果没过。

我看了看我以前写的快排,我只想问这有区别吗?为什么会WA

AC代码

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

int a[MAXN],n;

inline void Quick_read(int &x){//快读 
    int f = 1; x = 0 ; char ch = getchar();
    while((ch<'0'||ch>'9') && ch!='-') ch = getchar();
    if(ch == '-') f = -1,ch = getchar();
    while(ch>='0' && ch<='9') x = x*10+ch-'0',ch = getchar();
    x *= f;
}
inline void Quick_print(int x){//快输 
    if(x < 0) putchar('-'),x = -x;
    if(x > 9) Quick_print(x/10);
    putchar(x%10+'0');
}
inline void p(){putchar(' ');}//输出空格 

void Quick_sort(int a[],int l,int r){//快排 

    if(l >= r) return ;

    int mid = a[l + r >>1 ];

    int i = l , j = r ;

    while(i <= j){
        while(a[i] < mid) i++;
        while(a[j] > mid) j--;//不能取等 
        if(i <= j){
            swap(a[i],a[j]);
            i++;j--;
        }
    }
    Quick_sort(a,l,j);
    Quick_sort(a,i,r);
}

int main(){
	Quick_read(n);

    for(int i=1; i<= n ; i++)Quick_read(a[i]);

    Quick_sort(a,0,n);

    for(int i=1; i<=n ; i++ )Quick_print(a[i]),p();

    return 0;
}

垃圾代码:

#include<bits/stdc++.h>
#define MAXN 1000050

using namespace std;

int n,a[MAXN];

void quick_sort(int a[],int l,int r ){
	
	if(l >= r) return ;
	
	int mid = l + r >>1 ;
	
	int i = l , j = r ;
	
	while(i <= j){
		while(a[i] < a[mid]) i++;
		while(a[j] > a[mid]) j--;
		if(i <= j){
			swap(a[i],a[j]);
			i++;j--;
		}
	}
	quick_sort(a,l,j);
	quick_sort(a,i,r);
}


int main(){
	scanf("%d",&n);
	
	for(int i = 1; i <= n; i++) scanf("%d",&a[i]);
	  
	quick_sort(a,0,n);
	
	for(int i = 1; i <= n; i++) printf("%d ",a[i]);
	
	return 0;
}
2021/2/3 09:52
加载中...