我写了这样的二等分搜索
步骤说明:
1.检查是否为空
2.选择中级索引作为进入测试
3.递归搜索
4.找到基本情况== nums [mid]
In [14]: %paste
from typing import List
def bi_search(nums: List[int], find: int) -> int:
"""
mid value is the key here.
"""
if len(nums) == 0:
return -1
else:
mid = len(nums) // 2 #testEntry
if find == nums[mid]:
return mid
if find < nums[mid]:
sub_nums = nums[:mid]
bi_search(sub_nums, find)
if find > nums[mid]:
sub_nums = nums[mid:]
bi_search(sub_nums, find)
## -- End pasted text --
运行
In [15]: nums = list(range(1000))
In [16]: find = 456
In [17]: result = bi_search(nums, find)
In [18]: result
In [19]:
我仔细检查了程序,但没有发现错误。
我的二等分搜索有什么问题?