二分查找
2018-01-17 本文已影响0人
张义飞
二分查找法
算法复杂度:log2n
简单查找复杂度:n
输入,输出
输入的是一个有序列表,一个查找的值,输出一个值的位置,可能为空。
设计与实现
数据结构: 数组
查找元素的范围: array[0] <= 查找的元素 <= array[arrray.length-1]
设计
二分查找1.jpg查找范围在low和high之间
low = 0
high = array.length - 1
查找的值和mid比较,mid是中间值,因为数组中元素已经排过序了,mid应该是个整数,除不尽向下取整
实现
def binary_search(list, item):
low = 0
high = len(list) - 1
while low <= high:
mid = (low + high) / 2
guess = list[mid]
if guess == item: //找到了元素,返回下标
return mid
if guess > item: //猜的元素在左边
high = mid - 1
else:
low = mid + 1 //猜的元素在右边
return None;
print binary_search([1,2,3,4,6,8], 4)
关键点
- 输入数据是有序列表
- 选中间值进行比较
- 算法复杂度log2n