void qsort(int L, int R) {
int l = L, r = R;
int rd=l+rand()%(r-l+1);
swap(a[rd],a[r]);
int poi=l-1;
for(int i=l;i<r;++i){
if(a[i]<=a[r]){
swap(a[++poi],a[i]);
}
}
swap(a[++poi],a[r]);
if(poi-1>L) qsort(L,poi-1);
if(R>poi+1) qsort(poi+1,R);
}
void qsort(int L, int R) {
int l = L, r = R;
int tmp;
int fla = a[l+rand()%(r-l+1)];
while (l <= r) {
while (a[l] < fla) ++l;
while (a[r] > fla) --r;
if (l <= r) {
tmp = a[l]; a[l] = a[r]; a[r] = tmp;
l++; r--;
}
}
if (L < r) qsort(L, r);
if (l < R) qsort(l, R);
}
为什么这两种快排效率差很多?第一个会T