找到三个整数中值的最有效方法

时间:2014-04-30 15:35:22

标签: c# median

哪种最有效的方法是在不使用数组的情况下找到三个整数的中位数,如下例所示:

int[] median = {int a, int b,int c};
Array.Sort(median); 

int medianValue = median[1];

2 个答案:

答案 0 :(得分:14)

我所知道的最快的方法是使用

max(min(a, b), min(max(a, b), c))

我相信C#对minmax的两个参数进行了优化。由于分支,这比采用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;
    }