C# 求三个整数中值的最有效方法
不使用如下示例中的数组,找到三个整数的中值最有效的方法是:C# 求三个整数中值的最有效方法,c#,median,C#,Median,不使用如下示例中的数组,找到三个整数的中值最有效的方法是: int[] median = {int a, int b,int c}; Array.Sort(median); int medianValue = median[1]; 我所知道的最快的方法就是使用 max(最小(a,b),最小(最大(a,b,c)) 我相信C#对min和max采用两个参数进行了优化。由于分支,这将比使用if语句更快 还有其他窍门:可以使用XOR和
int[] median = {int a, int b,int c};
Array.Sort(median);
int medianValue = median[1];
我所知道的最快的方法就是使用
max(最小(a,b),最小(最大(a,b,c))
我相信C#对min
和max
采用两个参数进行了优化。由于分支,这将比使用if
语句更快
还有其他窍门:可以使用XOR和<实现最小值和最大值,但我怀疑这对现代体系结构有什么好处。intmedian(intnum1,intnum2,intnum3)
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;
}
{
if((num2num1&&num1>num3))
{
返回num1;
}
如果((num1num2&&num2>num3))
{
返回num2;
}
返回num3;
}
使用两个模拟排序的if
语句。如果您的集合始终仅限于3个元素,则无需担心效率。您迄今为止做了哪些尝试,以及您的实现中存在哪些问题?@Jeroenvanevel您能用2个if与我们分享解决方案吗?@Stenperov:取消删除您的帖子,你的第二句话(我编辑过)有一个小错误。@stenportov:很可能你是对的。我的优化来自C和C++世界,在那里,现代芯片组肯定会有快速实现<代码> MIN <代码>和