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

时间:2021-12-29 11:06:01
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;
}


牛. 

30 个解决方案

#1


膜拜之

#2


呃。。。。。。。。

#3


这个代码...
偶看不懂

#4


打入十八层地域

#5


缩进成这样,过1周自己大概也看不明白了..私下觉得把这样的代码风格当大牛不是好事哈..嘿嘿

#6


了理原里之后写了一个:
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;
  
}

#7


这样看大家应该看明白了吧

#8


就是abc三个数取中间一个吧...写成函数模板...
汗...这缩进...

#9


lz
想干嘛???

#10


还可以,少走了点弯路

#11


这个算法我没有看完,我觉得还要考虑相等的情况,希望楼主继续完善吧!

#12


看吧.   这是一个逻辑推理

#13


这么经典的算法 即然没人看的懂.       悲哀    

#14


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;
         }
      }
    }
}
整理一下.

#15


其实我觉得末必要搞得那么复杂吧

#16


这也叫复杂 ?   无语.  这么好的算法 没人欣赏,看来......

#17


整理如下:

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;
        }
    }
}

#18


引用 16 楼 zhulinjia 的回复:
这也叫复杂 ?  无语.  这么好的算法 没人欣赏,看来......





    // 下边是我以前写的代码,虽然很简单,但现在看起来还是很不错的。    
    
    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;




#19


引用 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…

你的算法, 有好多重复的的步骤.  太多渣子了.

#20


我也发一个。。。。

#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回贴专用。。

#21


都不错
O(∩_∩)O哈哈~
每个人想法不同

#22


%_%见识了!简约而不简单!呵呵呵呵呵呵呵呵

#23


up!

#24


ACM写的多的人写的程序都读不懂

#25


引用 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; 
 …


寒。。。

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

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

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

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

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

希望能得到指正,谢谢

#26




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

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;

#27


晕,,,

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



哈哈,以前真笨

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

#28


o

#29


对不起,我错了。。。

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



那缩进格式,还真可怕。

555,现丑了。

#30


LS这么多人中,能看代码的人太少了,能看懂的人也太少了. 

不错. 有长进. 

#1


膜拜之

#2


呃。。。。。。。。

#3


这个代码...
偶看不懂

#4


打入十八层地域

#5


缩进成这样,过1周自己大概也看不明白了..私下觉得把这样的代码风格当大牛不是好事哈..嘿嘿

#6


了理原里之后写了一个:
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;
  
}

#7


这样看大家应该看明白了吧

#8


就是abc三个数取中间一个吧...写成函数模板...
汗...这缩进...

#9


lz
想干嘛???

#10


还可以,少走了点弯路

#11


这个算法我没有看完,我觉得还要考虑相等的情况,希望楼主继续完善吧!

#12


看吧.   这是一个逻辑推理

#13


这么经典的算法 即然没人看的懂.       悲哀    

#14


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;
         }
      }
    }
}
整理一下.

#15


其实我觉得末必要搞得那么复杂吧

#16


这也叫复杂 ?   无语.  这么好的算法 没人欣赏,看来......

#17


整理如下:

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;
        }
    }
}

#18


引用 16 楼 zhulinjia 的回复:
这也叫复杂 ?  无语.  这么好的算法 没人欣赏,看来......





    // 下边是我以前写的代码,虽然很简单,但现在看起来还是很不错的。    
    
    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;




#19


引用 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…

你的算法, 有好多重复的的步骤.  太多渣子了.

#20


我也发一个。。。。

#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回贴专用。。

#21


都不错
O(∩_∩)O哈哈~
每个人想法不同

#22


%_%见识了!简约而不简单!呵呵呵呵呵呵呵呵

#23


up!

#24


ACM写的多的人写的程序都读不懂

#25


引用 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; 
 …


寒。。。

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

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

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

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

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

希望能得到指正,谢谢

#26




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

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;

#27


晕,,,

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



哈哈,以前真笨

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

#28


o

#29


对不起,我错了。。。

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



那缩进格式,还真可怕。

555,现丑了。

#30


LS这么多人中,能看代码的人太少了,能看懂的人也太少了. 

不错. 有长进.