【发布时间】:2016-07-04 00:17:59
【问题描述】:
除了以下之外,还有没有更好的方法来使用随机枢轴进行快速排序(如果没有交换,我就无法做到)?请指教
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;
}
另外,如果不正确,请告诉我。谢谢!
【问题讨论】:
-
不想粗鲁,但如果您不研究快速排序并且没有测试代码的正确性,我们为什么要关心?
-
我在最后进行了测试,也进行了研究。但是,是的,上述实现可能不如您的正确,我的研究可能不如您的。
-
我指的是“另外,如果不正确,请告诉我。”但如果你做你的研究,对我来说没问题。无论如何,我想不出比你更好的解决方案。
标签: quicksort hoare-logic