写二分查找时容易出现无限循环代码如下:
1. 问题代码
# 二分查找
num_list = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
target = 5
i, j = 0, len(num_list) - 1
while i < j:
mid = (i + j)//2
if num_list[mid] < target:
i = mid
else:
j = mid
# j = mid - 1 也会一样出现无限循环
二分查找死循环原因及寻找边界修复

本文分析了二分查找中可能导致无限循环的原因,指出错误在于`mid`值的向下取整处理。解决方案是调整`i`的赋值为`i = mid + 1`。同时,介绍了寻找右边界需在`if`判断中添加等号,并展示正确寻找左边界的方法。总结强调了`mid`计算和边界寻找策略的重要性。
最低0.47元/天 解锁文章
2222

被折叠的 条评论
为什么被折叠?



