不是STL的快排
就是我看到了这种写法
void qsort(ll l,ll r){
if(l>=r)return;
ll mid=a[(l+r)>>1];
ll i=l,j=r;
do{
while(a[i]<mid)i++;
while(a[j]>mid)j--;
if(i<=j)swap(a[i],a[j]),i++,j--;
}while(i<=j);
qsort(l,j);qsort(i,r);
}
请问while和if里面的取<=和<有什么区别?
void qsort(ll l,ll r){
ll mid=a[(l+r)>>1];
ll 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--;
}
if(l<i-1)qsort(l,i-1);
if(i+1<r)qsort(i+1,r);
}
还有,像这样为什么是错的?
谢谢