二分查找:python 實現
def binary_seaech(alist,item):
"""二分查找 遞歸實現"""
n = len(alist)
if n > 0:
mid = n // 2
if alist[mid] == item:
return True
elif item < alist[mid]:
return binary_seaech(alist[:mid],item)
else:
return binary_seaech(alist[mid+1:],item)
return False
def binary_find(alist, item):
"""二分查找 非遞歸實現"""
n = len(alist)
first = 0
last = n-1
while first <= last:
mid = (first + last) // 2
if alist[mid] == item:
return True
elif item < alist[mid]:
last = mid-1
else:
first = mid + 1
return False
if __name__ == "__main__":
li = [17, 21, 3, 4 ,5 ,55, 77 ,93]
print(binary_find(li,5))
print(binary_find(li,200))