Python 二分查找法
算法要求
- 必须采用顺序存储结构
- 必须按照关键字大小有序排列
复杂度
- 平均时间复杂度:O(log n)
- 最坏时间复杂度:O(log n)
- 最优时间复杂度:O(1)
- 空间复杂度:O(1)
示例代码
def binary_search(data_list, val):
"""
二分查找法/折半搜索算法/对数搜索算法
while循环方法
:param data_list: 数据列表
:param val: 查找的目标值
:return: 目标值的索引
"""
low = 0
high = len(data_list) - 1
while low <= high:
mid = (low + high) // 2
if data_list[mid] == val:
return mid
elif data_list[mid] > val:
high = mid - 1
else:
low = mid + 1
return
ret = binary_search(list(range(1, 100000000)), 8)
print(ret)
list(range(1, 100000000)), 8)
print(ret)