算法思想
将数据分成两部分,并比较中间值与待查找数据大小,如果小于则在前半段查找,如果大于则在后半段查找。经过数次分割直到中间值等于待查数据或找不到待查数据为止。
分析
- 时间复杂度:O(logn)。
- 数据必须是有序的,并且所有数据必须加载到内存中。
- 适用于不需增删的静态数据。
注:来源于吴灿铭《图解数据结构-使用Python》
代码实现
import random
class Search(object):
def binary_search(self, data, value):
"""
二分查找迭代法实现
:param data: list 待查找序列
:param value: int 待查数据
:return: int 索引(查找不到返回-1)
"""
low = 0
high = len(data) - 1
while low <= high:
mid = int(