这是求no. 5最大值的更好方法
Which is a better way of finding the max of no.s?
这是一种更好的方法来编写程序来查找4个no的最大值。c/c++:
- 使用第五个变量&将其与所有输入 进行比较
- 使用max()函数
- 和使用if 比较输入
或建议其他方法,如果它有更好的方法(在空间&解决问题的时间复杂度
在超过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);
}
}
}
相关文章:
- 初始化具有非默认构造函数的std::数组项的更好方法
- Protobuf中重复字段的问题.使用重复字段进行序列化/反序列化的更好方法是什么?
- 编写按初始值循环的循环的更好方法是什么
- 用 c++ 为游戏制作"bullet"的更好方法?
- 在CMakeLists中包含目录的更好方法.txt
- 将QDomDocument数据用作文本的更好方法
- C++ - 创建具有相同字符的特定大小的以 null 结尾的 c 样式字符串的更好方法
- 在 sqlite3 中批量插入的更好方法C++
- 设计许多单例代码结构的更好方法
- 使用继承的类模板避免公共成员不可见和源代码膨胀/重复的更好方法
- 在初始化列表中初始化数组的更好方法
- 将对象从一个 std::d eque 移动到另一个的更好方法
- 请告诉我在巴泽尔拥有多平台工作空间的更好方法
- 构造具有大量数据的对象的更好方法(C++)
- 从2D矢量中找出最小尺寸的向量元素的更好方法
- 在C++中创建不可变对象的更好方法
- 在构造函数中组织初始值设定项列表的更好方法
- std::copy with return values - 防止"expression: string iterators incompatible"的更好方法?
- 删除数组成员的更好方法是什么?
- 在C 中操作数据的更好方法是什么