40分求助
查看原帖
40分求助
914063
8174665qian楼主2023/7/5 10:22

用的是快排,前三个点WA。

#include<bits/stdc++.h>
using namespace std;
long long ai[100005];
int n;
void q(int left,int right){
	int mid=(left+right)/2;
	int i=left,j=right;
	do{
		while(ai[i]<ai[mid])i++;
		while(ai[j]>ai[mid])j--;
		if(i<=j){
			swap(ai[i],ai[j]);
			i++;
			j--;
		}
	}while(i<=j);
	if(i<right)q(i,right);
	if(j>left)q(left,j);
}
int main(){
	cin>>n;
	for(int i=1;i<=n;i++)cin>>ai[i];
	q(1,n);
	for(int i=1;i<=n-1;i++)cout<<ai[i]<<" ";
	cout<<ai[n]<<endl;
	return 0;
}
2023/7/5 10:22
加载中...