二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。但是,二分查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。
顺序查找、简单查找
介绍二分查找之前,我们先看一下最容易理解的顺序查找或者说简单查找 。
顺序查找也就是傻找,一个一个对比,直到成功匹配查找值。最坏的情况在最后一个元素才匹配到查找值。
- 顺序查找的运行时间是O(n)。
- 顺序查找虽然‘傻’,但是它对数据存储顺序没有要求,是最通用的查找算法。
Python实现如下
生成无序列表
def ord_list(n): #生成有序列表
ord = list(range(n))
return ord
def ran_list(n): #生成无序列表
ran = ord_list(n)
random.shuffle(ran)
return ran
简单查找算法
def simple_search(key,list): #实现简单查找
num=0 #记录操作次数
for inde