分别用递归、循环、bisect实现二叉查找(python实现)
程序员文章站
2024-03-19 21:31:28
...
1、递归实现二叉查找
def binary_search_recursion(lst,target,low,high):
if high < low:
return None
middle = (low + high)//2
if lst[middle] > target:
return binary_search_recursion(lst,target,low,middle - 1)
elif lst[middle] < target:
return binary_search_recursion(lst,target,middle + 1,high)
else:
return middle
2、循环实现二叉查找
def binary_search_loop(lst,target):
low, high = 0,len(lst)-1
while low <= high:
middle = (low + high)//2
if lst[middle] > target:
high = middle -1
elif lst[middle] < target:
low = middle + 1
else:
return middle
return None
3、bisect实现二叉查找
import bisect
lst = [1,2,3,4,4,5,6]
print(bisect.bisect_left(lst,4))
print(bisect.bisect_right(lst,4))