c# - 找到三个整数的中位数的最有效方法

标签 c# median

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

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

int medianValue = median[1];

最佳答案

我知道最快的方法是使用

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

我相信 C# 对接受两个参数的 minmax 进行了优化。由于分支,这将比采用 if 语句更快。

还有其他技巧:您可以使用 XOR 和 < 实现最小值和最大值,但我怀疑这对现代架构有任何好处。

关于c# - 找到三个整数的中位数的最有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23392321/

相关文章:

c# - 避免闭包中的转义值

c# - 通过 WCF 抛出异常的正确方法

c# - 为什么 ReSharper 建议在动态类型上可能出现 NullReferenceException?

c# - Windows服务调用WCF服务(web http配置)

c# - 如何在我尝试了各种解决方案的 Appium 和 C# 中修复 'NoElementException'?

r - spatstat 包中的加权中位数

c++ - 平衡 KD 树

mysql - 如何使用case when计算mysql中的中位数

algorithm - 从列表中删除元素时更新中位数

r - 如何在 R 中编写 Mood 中值检验的排列等价代码? (使用排列获得 p 值)