求三个数的中间值 unsigned char a,b,c;求着三个数中的中间值。求一个最快的算法。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 求一个计算速度比较快的。偏算法。我先给一个比较弱的方法,大家看看你的方法是不是比这个还要快。if((a>=b&&a<=c)||(a<=b&&a>=c))return aelse if((b>=a&&b<=c)||(b<=a&&b>=c))return belse return c #define MIDDLE(a, b, c) max(min((a), (b)), min(max((a), (b)), (c))) 奇怪了,照理说Eleven的方法比我的要好,可是我用图像矩阵中的数据做测试运行30遍,发现一个用了781ms,Eleven的方法用了1015ms 你的方法快的,分支不需要都要计算,#define MIDDLE(a, b, c) max(min((a), (b)), min(max((a), (b)), (c)))代码简洁,但几乎都参与运算了。 csdn上的潜龙卧虎门,利用中午休息时间来show一下你们的智慧才智吧。 这个应该更快,因为比较过的两个数不重复再比较了. int a=1,b=2,c=3; if(a>=b) { if(b>=c)return b; else if(a>=c) return c; else return a; } else { if(a>=c)return a; else if(b>=c)return c; else return b; } std::vector<unsigned char> myvector(3);myvector.at(0)= a;myvector.at(1)= b;myvector.at(2)= c;sort(myvector.begin(), myvector.end());myvector.at(1)就是中间值 你们都弱爆了!!先求个最大值,再求个最小值(四次if())就搞定了,最后a+b+c-max-min就是了 WTL怎么用GDI画圆? 多语言界面切换一般用什么方案阿 C++.NET和C++有什么区别? 为什么在我的类向导CMainFrame里没有WM_DRAWITEM消息? 在线求助 获取 显卡信息(型号,显存) 按标准格式新开线程编译竟然说参数错! 请问这是什么错误?谁能帮我翻译一下。最好给出解决方法。对者给分!...在线等待! 高分请教关于prn的问题 在dll中如何判断自己被同一个程序(或dll)调用的次数[比较难还是我很菜?] 菜鸟举手:在写一个局域网聊天程序,如何进行测试?? IOCP编程Post一个AcceptEx,收到客户端连接的事件后,怎么样取得客户端的地址和端口?
我先给一个比较弱的方法,大家看看你的方法是不是比这个还要快。
if((a>=b&&a<=c)||(a<=b&&a>=c))return a
else if((b>=a&&b<=c)||(b<=a&&b>=c))return b
else return c
#define MIDDLE(a, b, c) max(min((a), (b)), min(max((a), (b)), (c)))
int a=1,b=2,c=3;
if(a>=b)
{
if(b>=c)return b;
else if(a>=c) return c;
else return a;
}
else
{
if(a>=c)return a;
else if(b>=c)return c;
else return b;
}
myvector.at(0)= a;
myvector.at(1)= b;
myvector.at(2)= c;
sort(myvector.begin(), myvector.end());
myvector.at(1)就是中间值