【发布时间】:2018-10-09 08:08:51
【问题描述】:
我正在尝试解决二分搜索问题,但是,我不断遇到无限循环,因为 lo hi 和 mid 的值不会像他们想象的那样改变。我正在尝试搜索函数count_lines(mid,k) >= n 的最小中间值。我花了几个小时调试这段代码,但我仍然无法弄清楚lohi 和mid 的值有什么问题。有人可以看看我的代码并告诉我为什么会这样吗?非常感谢!
失败的测试用例:n=9k=2
这是我的代码:
def count_lines(v,k):
...
...
return count_lines #count_lines is an integer`
def binarySearch_v(n, k):
lo = 0
hi = n
mid = (lo + hi)//2
while (lo <= hi):
if (count_lines(mid, k) < n):
lo = mid
elif (count_lines(mid, k) > n):
hi = mid
elif (count_lines(mid, k) >= n and count_lines(mid-1, k) < n):
return mid
mid = (lo + hi) // 2
def main():
print(binarySearch_v(n,k)) # Failed at n=9 & k=2
main()
【问题讨论】:
标签: python algorithm binary-search