这道题用正常的快排,AC代码中有
if(l>r){
return ;
}
int mid=(l+r)>>1;
int i=l;
int 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--;
}
}
qsort(l,j);
qsort(i,r);
但是如果改成
int mid=(l+r)>>1;
int i=l;
int 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--;
}
}
只有40分,我觉得两个都差不多。
但是为什么会Wa呢