快排求调
查看原帖
快排求调
358377
momiji67楼主2023/11/25 11:51
#include<bits/stdc++.h>
using namespace std;
int n,a[10005];
void qs(int l,int r){
	if(l>=r){
		return;
	}
	int b[10005],c=a[(l+r)/2],x=0,y=0,cntx=0,cnty=0;
	for(int i=l;i<=r;i++){
		b[i]=a[i];
		if(b[i]>c)x++;
		else y++;
	}
	for(int i=l;i<=r;i++){
		if(b[i]>c){
			a[cntx]=b[i];
			cntx++;
		}
		else{
			a[cnty]=b[i];
		}
	}
	qs(l,l+x);
	qs(l+x+1,r);
}
int main(){
	cin>>n;
	for(int i=0;i<n;i++){
		cin>>a[i];
	}
	qs(0,n-1);
	for(int i=0;i<n;i++){
		cout<<a[i]<<' ';
	}
	return 0;
}
2023/11/25 11:51
加载中...