算法图解学习笔记
从今天起记录《算法图解》一书学习过程,在这不羁的岁月里记录学习历程,为了更快进步,更为了能时刻勉励自己。
Python实现-二分法
原理:二分法查询数组中的目标元素,对一个数组进行对半分,依次比较中间元素与目标元素的大小,若中间元素小,择取数组后半段;若中间元素大,择取数组前半段,重复以上步骤,直到最后查询出所需要的元素。二分法算法的输入一定是一个有序的元素列表。
运行时间(O(log2n)),算法运行时间并不以秒为单位,而是从其增速的角度度量的。
二分法
# 定义一个函数,传入一个list和一个目标元素
def binary_search(list, item):
# 查找的范围 low-high
low = 0
high = len(list) - 1
while low <= high:
mid = int((low + high) / 2)
guess = list[mid]
if guess == item:
# 返回目标元素的值
return guess
if guess < item:
low = mid + 1
else:
high = mid - 1
# 如果没有找到,返回None
return None
# 主函数
if __name__ == '__main__':
my_list = [1, 3, 5, 7, 9]
print(my_list)
index = binary_search(my_list, 3)
print(index)