我有这项工作(python)要做,我无法想办法解决这个问题。 任何人都可以帮助我吗?
创建一个递归函数,给定一个有序数字列表和一个数字,返回元素的位置等于数字或立即高于数字。要找到位置,请实现二进制搜索算法:
1-将给定数字与列表中心位置的数字进行比较。
2-如果数字较小,请重复第一步到列表的前半部分。
3-如果数字较高,请重复第一步到列表的后半部分。
4-重复这些步骤,直到找到相同的数字或直到搜索区域缩小为仅一个元素。
答案 0 :(得分:0)
您已经知道了这些步骤。所以它只是实现它们的问题。找到中心位置并应用步骤。
def f(numbers, n, start, end):
middle = (end-start) // 2
if numbers[middle] == n:
return middle
if end - start == 1:
return 'not found'
if numbers[middle] < n:
return f(numbers, n, start, middle)
else:
return f(numbers, n, middle, end)