除了下面,还有没有更好的方法来使用随机枢轴进行快速排序(我不能没有交换)?请指教
int hoare_par (int *a, int b, int e)
{
if (b < e) {
int p_i = __random(b, e);
__swap(&a[b], &a[p_i])
int p = a[b];
b = b - 1;
e = e + 1;
while (1) {
do { ++b;} while (a[b] < p);
do { --e;} while (a[e] > p);
if (b < e)
__swap( &a[b], &a[e]);
else
return e;
}
}
return e;
}
另外,如果不正确,请告诉我。谢谢!