二分查找:
二分查找也称折半搜索,是一种在有序数组中查找某一特定元素的搜索。
:
给出一个列表[1, 3, 5, 7, 9],现在要寻找数值为3在那个位置
利用Python实现代码如下:
While循环实现:
def Binary_Search(arr, item):
low = 0
high = len(arr) - 1
while low <= high:
mid = int((low + high) / 2)
guess = arr[mid]
if guess == item:
return mid
if guess > item:
high = mid - 1
else:
low = mid + 1
return None
mylist=[1, 3, 5, 7, 9]
print(binary_search(mylist, 3)
# Output: 1
递归实现:
def Binary_Search(arr, item):
low = 0
high = len(arr) - 1
while low <= high:
mid = int((low + high) / 2)
guess = arr[mid]
if guess == item:
return mid
if guess > item:
high = mid - 1
else:
low = mid + 1
return None
mylist=[1, 3, 5, 7, 9]
print(Binary_Search(mylist, 0, len(mylist), 5))
#Output: 2
第一章总结:
二分查找速度比简单查找快得多
二分查找法需要在有序组中才可以进行,运行时间为O(log n)
算法的运行时间不以秒为单位,是以自增的角度度量的
运行时间用大O表示