二分查找
二分查找
思想:二分搜索是一種在有序數組中查找某一特定元素的搜索算法。搜索過程從數組的中間元素開始,如果中間元素正好是要查找的元素,則搜索過程結束;如果某一特定元素大于或者小于中間元素,則在數組大于或小于中間元素的那一半中查找,而且跟開始一樣從中間元素開始比較。如果在某一步驟數組為空,則代表找不到。這種搜索算法每一次比較都使搜索范圍縮小一半。
實例:
def binarySearch(alist, item):
"""
二分查找
:param alist: alist是一個有序序列,
:param item: item是我們要在alist中查找的元素
:return: find
"""
find = False
low = 0
high = len(alist) - 1
while low <= high:
mid = (low + high) // 2 # 中間元素的下標
if item < alist[mid]:# 查找的元素<中間元素,查找的元素存在中間元素左側
# 將中間元素左側序列作為一個新的序列,然后再基于item和當前新序列的中間值進行大小比較
high = mid - 1 # low和high就可以表示新序列的范圍
elif item > alist[mid]: # 查找的元素存在于中間元素右側
low = mid + 1 # low和high就可以表示中間元素右側的子序列
else: # 查找的元素就是中間元素
find = True
break
return find
alist = [1, 2, 3, 4, 8]
print(binarySearch(alist, 8))
總結
- 上一篇: 九曲黄河万里沙下一句(九曲黄河万里沙,浪
- 下一篇: 14年路虎极光车有没有远程启动功能呢?