为什么把l>=r改成l==r就错了,感觉不会出现l>r的情况啊
查看原帖
为什么把l>=r改成l==r就错了,感觉不会出现l>r的情况啊
114187
ubec楼主2022/10/22 18:55
#include<bits/stdc++.h>
using namespace std;
int n;
int a[100100],b[100100];
void msort(int l,int r)
{
	if(l>=r) return;
}
void qsort(int l,int r)
{
	//consider that mid == r, 
	//r-l=1 mid=(2l+1)/2=l, so operation qsort(l,l) qsort(r,r) 
	int i=l,j=r,pos=l,mid=floor(1.0*(l+r)/2);
    if(l==r) return;
	for(int T=l+1;T<=r;++T)
	{
		if(a[T]>a[l]) b[j--]=a[T];
		else b[i++]=a[T];
	}
	b[i]=a[l];
	for(int T=l;T<=r;++T) a[T]=b[T];
//	for(int T=l;T<=r;++T) cout<<a[T]<<" ";cout<<endl;
	qsort(l,mid);
	qsort(mid+1,r);
}
int main()
{
 	freopen("in.txt","r",stdin);
	cin>>n;
	for(int i=1;i<=n;++i) cin>>a[i];
	qsort(1,n);
	for(int i=1;i<=n;++i) cout<<a[i]<<" ";
	return 0;
}
2022/10/22 18:55
加载中...