我正在实施quicksort,我希望将枢轴设置为中位数或三位数。这三个数字是第一个元素,中间元素和最后一个元素。
我能不能找到中位数呢?比较?
median(int a[], int p, int r)
{
int m = (p+r)/2;
if(a[p] < a[m])
{
if(a[p] >= a[r])
return a[p];
else if(a[m] < a[r])
return a[m];
}
else
{
if(a[p] < a[r])
return a[p];
else if(a[m] >= a[r])
return a[m];
}
return a[r];
}
最佳答案
您不能一次完成,而只能使用两个或三个,所以我想说您已经有了最少的比较。
关于median - 最低编号比较以找到3个数字的中位数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17158667/