int choose_pivot(int lo, int hi){
int mid = ((hi-lo)/2)+1;
if((arr[hi]<arr[lo])^(arr[hi]<arr[mid])){
return hi;
}
else if((arr[lo]<arr[hi])^(arr[lo]<arr[mid])){
return lo;
}
else{
return mid;
}
}
此函数应按如下方式选择枢轴。考虑给定数组的第一个、中间和最后一个元素。(如果数组的长度为奇数,应该清楚“中间”元素是什么;对于偶数长度为 2k 的数组,使用第 k 个元素作为“中间”元素。确定这三个元素中的哪一个是中值。返回它的价值。
这个函数有什么问题不能让它发挥它的作用吗?我是否错过了一些函数没有给出预期结果的情况?