python3.5
時間複雜度:O(logn)
1.二分查找思想:
對有序序列(必須以順序表結果存儲)對半查找,根據大小比較,往上半折搜索或往下半折搜索,後面以此推類,直到找到結果
2.python代碼實現(遞歸與非遞歸)
#coding utf-8
def binary_search(alist,item):
"""二分查找"""
# 遞歸
n=len(alist)
if n>0:
mid=n//2
if alist[mid]==item:
return True
elif item<alist[mid]:
return binary_search(alist[:mid],item)
else:
return binary_search(alist[mid+1:],item)
return False
def binary_search1(alist,item):
"""非遞歸"""
n = len(alist)
first=0
end=n-1
while first <= end:
mid =(first+end)//2
if alist[mid] == item:
return True
elif item< alist[mid]:
end = mid - 1
else:
first = mid + 1
return False
if __name__=="__main__":
li=[17,20,26,31,44,54,55,77,93]
li=[int(i) for i in li]
print(binary_search(li,55))
print(binary_search(li,100))