哪种最有效的方法是在不使用数组的情况下找到三个整数的中位数,如下例所示:
int[] median = {int a, int b,int c};
Array.Sort(median);
int medianValue = median[1];
答案 0 :(得分:14)
我所知道的最快的方法是使用
max(min(a, b), min(max(a, b), c))
我相信C#对min
和max
的两个参数进行了优化。由于分支,这比采用if
语句更快。
还有其他技巧:你可以使用XOR和<来实现最小值和最大值。但我怀疑这对现代建筑有什么好处。
答案 1 :(得分:1)
int Median(int num1, int num2, int num3)
{
if ((num2 < num1 && num1 < num3) || (num2 > num1 && num1 > num3))
{
return num1;
}
if ((num1 < num2 && num2 < num3) || (num1 > num2 && num2 > num3))
{
return num2;
}
return num3;
}