#二分查找时间复杂度最好为O(1),最坏为O(logn)
def binary_search(alist, item):
"""递归实现二分查找"""
n = len(alist)
if n > 0:
mid = n // 2
if alist[mid] == item:
return True
elif alist[mid] > item:
return binary_search(alist[:mid], item)
else:
return binary_search(alist[mid + 1:], item)
return False
li = [1, 2, 3, 4, 5, 6]
res = binary_search(li, 6)
print(res)
def binary_search1(alist, item):
"""非递归实现二分查找"""
n = len(alist)
low = 0
high = n - 1
while low <= high:
mid = (low + high) // 2
if alist[mid] == item:
return True
elif alist[mid] > item:
high = mid - 1
else:
low = mid + 1
return False
li = [1, 2, 3, 4, 5, 6]
res = binary_search1(li, 6)
print(res)
Python实现二分查找(递归与非递归)
最新推荐文章于 2023-07-29 00:00:03 发布