gpt4 book ai didi

c++ - 二进制搜索: how to determine half of the array

转载 作者:行者123 更新时间:2023-12-01 15:04:42 25 4
gpt4 key购买 nike

这两个公式有什么区别

mid = low + (high - low) / 2;


mid = (high + low) / 2;

最佳答案

在第二版中,如果high + low大于int的最大值(假设highint),则它可能会溢出,从而引发未定义的行为。第一个版本解决了该特定错误。
第一个版本仍然存在问题,例如如果low是一个非常大的负数,则该差值仍会溢出。
从c++ 20开始,您应该为此使用 std::midpoint ,它可以处理大量的极端情况,并为所有情况做正确的事情。
这个看似简单的功能实际上很难实现,实际上,Marshall Clow在cppcon 2019上给出了一个小时的talk,其中涵盖了该功能的实现。

关于c++ - 二进制搜索: how to determine half of the array,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63847183/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com