给定五个随机元素,只需进行六次比较就可以找到中位数。但我有一个额外的要求,即还满足以下条件:
a < c && b < c && c < d && c < e
a < b 或 d < e 不需要。
我已经能够使用七次比较来满足这个条件,但不是六次。这是我的代码,应该是不言自明的:
void medianSort(int[] arr)
{
assert(arr.length == 5);
void sortPair(ref int a, ref int b)
{
if(a > b) swap(a, b);
}
sortPair(arr[0], arr[1]);
sortPair(arr[3], arr[4]);
sortPair(arr[0], arr[3]);
sortPair(arr[1], arr[4]);
sortPair(arr[2], arr[3]);
sortPair(arr[1], arr[2]);
sortPair(arr[2], arr[3]);
}
我有一个快速排序,我希望通过使用 5 的中位数来选择枢轴来增强它。通过满足该条件,五个元素已经排序。
是否有可能在六次比较中完成这一点,还是我能做到最好的七次?