py_二分查找
''' 查找:在一些数据元素中,通过一定的方法找出与关键字相同元素的过程, 列表查找:从列表中查找指定元素 输入:列表、待查找元素 输出:元素下标(未找到元素时一般返回None或-1) 内置列表查找函数:index() ''' # 顺序查找: 线性查找,从列表的第一个元素开始,顺序进行搜索,直到找到元素或搜索到列表的最后一个元素 # 时间复杂度 O(n) n---列表的长度 循环过程中无减半 def linear_search(li,val): # li 列表 val 待查找元素 for ind,v in enumerate(li): if v == val: return ind else: return None # 二分查找 : 折半查找,从有序列表中的初始候选区li[O:n]开始,通过对待查找的值与候选区中间的值的比较, # 可以使候选区少一半 # li[1,2,3,4,5,6,7,8,9] def binary_search(li,val): left = 0 right = len(li) - 1 while left <= right:# 筛选候选区值 mid = (left + right) // 2 if li[mid] == val: return mid elif li[mid] > val:#待查找值在mid的左侧 right = mid - 1 else:# li[mid] 值小于val 意味着带查找的值在mid右侧 left = mid + 1 else: return None li = [1,2,3,4,5,6,7,8,9] print(li) print(binary_search(li,3))