Python二分搜索是否需用lo+(hi-lo)//2?(lo+hi)//2是否足够?
在Python中二分搜索的中间值计算:(lo+hi)//2 足够吗?
- 结论:完全足够,没必要沿用Java里的
lo+(hi-lo)//2写法。 - 核心原因:Python的整数是任意精度类型,不存在Java那种固定位数整数导致的溢出问题——哪怕lo和hi是极大的数值,
lo+hi也不会溢出,计算结果始终准确。 - 两种写法的等价性:对任意满足
lo ≤ hi的整数,(lo+hi)//2和lo+(hi-lo)//2的计算结果完全一致。举两个例子:- 当
lo=1000000000,hi=2000000000时,两种写法都得到1500000000 - 当
lo=3,hi=6时,(3+6)//2=4,3+(6-3)//2=3+1=4,结果毫无差别
- 当
所以在Python写二分搜索时,直接用mid = (lo + hi) // 2就好,简洁又安全。
内容的提问来源于stack exchange,提问作者Atul Takekar
相关产品推荐
相关产品推荐

