【发布时间】:2021-06-05 06:12:40
【问题描述】:
我有一个排序后的数字列表。 [1,2,4,6,10,12]
我想在列表中找到一个数字。如果找不到,我想返回下一个最小的数字。
例如,n = 8。我搜索 8 但找不到它。然后我将返回 6,因为它是下一个最小的数字。
我有一些代码,但似乎无法正确索引:
def search_val(data, n):
low = 0
high = len(data) - 1
if data[-1] <= n:
return data[-1]
if data[0] >= time:
return
while low < high:
mid = (low + high) / 2
if data[mid] == n:
return data[n]
if data[mid] > n:
high = mid -1
if data[mid] < n:
low = mid + 1
if data[low] < n:
return data[low]
else:
return data[low - 1]
【问题讨论】:
标签: python binary-search