这是求no. 5最大值的更好方法

Which is a better way of finding the max of no.s?

本文关键字:更好 方法 最大值 no      更新时间:2023-10-16

这是一种更好的方法来编写程序来查找4个no的最大值。c/c++:

  1. 使用第五个变量&将其与所有输入
  2. 进行比较
  3. 使用max()函数
  4. 和使用if
  5. 比较输入

或建议其他方法,如果它有更好的方法(在空间&解决问题的时间复杂度

在超过4个变量的情况下,相同的算法方法仍然是最好的吗?

对于大量的元素,标准库有std::max_element算法,它对N元素进行max(N-1, 0)比较,这是理论最小值,甚至对于4个元素

实际上,它像方法1一样循环遍历所有元素。,但是如果N是2的幂(你的方法2),它可以对嵌套的max进行"消除比赛"。一些优化编译器甚至可能展开循环并产生一个复杂的if语句链(你的方法3)。

在评论中,c++ 11风格的解决方案max({a,b,c,d})是由@NathanOliver给出的(它只在constexpr上下文中工作)。但是在c++ 1z中,std::max_element也将变成constexpr,因此它将是完全通用的解决方案,无论大小,运行时或编译时。

TL;DR:不要想太多,使用标准库,它可以证明做的工作最少。

"更好"是一个失败的术语。正如评论中所指出的

max(max(a,b), max(c,d));

非常简洁,但是有3个函数调用。它在代码方面稍微快一些,但是写像

这样的东西需要更多的代码:
if (a>b)
{ 
  if (a>c)
  {
     if (a>d)
     {
         return (a);
     }
  }
}
if (b>a)
{ 
  if (b>c)
  {
     if (b>d)
     {
         return (b);
     }
  }
}
if (c>a)
{ 
  if (c>b)
  {
     if (c>d)
     {
         return (c);
     }
  }
}
if (d>a)
{ 
  if (d>b)
  {
     if (d>c)
     {
         return (d);
     }
  }
}