求中位数的算法. . . . . .

zhulinjia 2008-11-06 10:25:58
template <class Tp>
inline const Tp& median(const Tp& a, const Tp& b, const Tp& c)
{
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;
}


牛.
...全文
2310 30 打赏 收藏 转发到动态 举报
写回复
用AI写文章
30 条回复
切换为时间正序
请发表友善的回复…
发表回复
lx_616_at_yeah_net 2008-11-07
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 zhulinjia 的回复:]
这也叫复杂 ? 无语. 这么好的算法 没人欣赏,看来......
[/Quote]




// 下边是我以前写的代码,虽然很简单,但现在看起来还是很不错的。

assert( !((a==b) || (a==c) || (b==c)) );

if((a>b && a<c) || (a<b && a>c))
return a;
if((b>a && b<c) || (b<a && b>c))
return b;
if((c>a && c<b) || (c<a && c>b))
return c;




dzc8866 2008-11-07
  • 打赏
  • 举报
回复
整理如下:

template <class Tp>
inline const Tp& median(const Tp& a, const Tp& b, const Tp& c)
{
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;
}
}
}
zhulinjia 2008-11-07
  • 打赏
  • 举报
回复
这也叫复杂 ? 无语. 这么好的算法 没人欣赏,看来......
Li103ZzZ 2008-11-07
  • 打赏
  • 举报
回复
其实我觉得末必要搞得那么复杂吧
Li103ZzZ 2008-11-07
  • 打赏
  • 举报
回复
template <class Tp>
inline const Tp& median(const Tp& a, const Tp& b, const Tp& c)
{
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;
}
}
}
}
整理一下.
zhulinjia 2008-11-07
  • 打赏
  • 举报
回复
这么经典的算法 即然没人看的懂. 悲哀
zhulinjia 2008-11-07
  • 打赏
  • 举报
回复
看吧. 这是一个逻辑推理
zhulinjia 2008-11-07
  • 打赏
  • 举报
回复
LS这么多人中,能看代码的人太少了,能看懂的人也太少了.

不错. 有长进.
lx_616_at_yeah_net 2008-11-07
  • 打赏
  • 举报
回复
对不起,我错了。。。

太迷信自己写的代码了,自始至终 没注意看楼主发的代码。



那缩进格式,还真可怕。

555,现丑了。
abc_abc_01 2008-11-07
  • 打赏
  • 举报
回复
o
lx_616_at_yeah_net 2008-11-07
  • 打赏
  • 举报
回复
晕,,,

现在不看书学习,反而有长进了



哈哈,以前真笨

不好意思,刚才上边说的话,有点激动了

lx_616_at_yeah_net 2008-11-07
  • 打赏
  • 举报
回复


// 不好意思,自己又进化修改了成了一个版本。
// 这个刚改的,还没测试,还不知道稳不稳定。

assert(!((a==b) || (a==c) || (b==c)) );

return ((a>b && a<c) || (a<b && a>c)) ? a : ((b>a && b<c) || (b<a && b>c)) ? b : c;

lx_616_at_yeah_net 2008-11-07
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 zhulinjia 的回复:]
引用 18 楼 lx_616_at_yeah_net 的回复:
引用 16 楼 zhulinjia 的回复:
这也叫复杂 ? 无语. 这么好的算法 没人欣赏,看来......



C/C++ code

// 下边是我以前写的代码,虽然很简单,但现在看起来还是很不错的。

assert( !((a==b) || (a==c) || (b==c)) );

if((a>b && a <c) || (a <b && a>c))
return a;
if((b>a && b <c) || (b <a && b>c))
return b;

[/Quote]

寒。。。

你知道不知道 短路用法, 还有 return 语句用法

只要条件一不符合,就短路退出该if语句。

只要条件一符合,就执行 return 退出函数。

我的算法,以前改了好多次,也反汇编优化了好多次才改成这样子的,

我实在看不出来有什么地方会重复的,和存在什么渣子。

希望能得到指正,谢谢
nickywang2004 2008-11-07
  • 打赏
  • 举报
回复
ACM写的多的人写的程序都读不懂
giftfish 2008-11-07
  • 打赏
  • 举报
回复
up!
jakqigle 2008-11-07
  • 打赏
  • 举报
回复
%_%见识了!简约而不简单!呵呵呵呵呵呵呵呵
cyj626 2008-11-07
  • 打赏
  • 举报
回复
都不错
O(∩_∩)O哈哈~
每个人想法不同
Crazy_hand 2008-11-07
  • 打赏
  • 举报
回复
我也发一个。。。。

#include<iostream>
#include<cstdlib>
using namespace std;
int main( void )
{
int a = 6, b = 5, c = 7;

int mod = a > b ? b > c ? b : (a>c ? c : a )
: a > c ? a : ( b>c ? c : b);

cout<< mod <<endl;
system( "pause" );
return 0;
}



----------------------------------------------------------------------------------------------------------------------
传说回贴会得到奖励!!!
每天例行工事。。
雁过留声,人过留名。。。。
赚点分,留着以后问问题用。。。
顺便顶下贴。。。
CSDN回贴专用。。

zhulinjia 2008-11-07
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 lx_616_at_yeah_net 的回复:]
引用 16 楼 zhulinjia 的回复:
这也叫复杂 ? 无语. 这么好的算法 没人欣赏,看来......




C/C++ code

// 下边是我以前写的代码,虽然很简单,但现在看起来还是很不错的。

assert( !((a==b) || (a==c) || (b==c)) );

if((a>b && a<c) || (a<b && a>c))
return a;
if((b>a && b<c) || (b<a && b>c))
return b;
if((c>a && c<b) || (c<a && c>b))
re…
[/Quote]
你的算法, 有好多重复的的步骤. 太多渣子了.
hzc191025 2008-11-06
  • 打赏
  • 举报
回复
这个算法我没有看完,我觉得还要考虑相等的情况,希望楼主继续完善吧!
加载更多回复(10)

65,210

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧