二分查找算法

二分查找

 从有序列表的候选区data[0:n]开始,通过对待查找的值与候选区中间值的比较,可以使候选区减少一半

 
二分查找:
在一段数字内,找到中间值,判断要找的值和中间值大小的比较。
如果中间值大一些,则在中间值的左侧区域继续按照上述方式查找。
如果中间值小一些,则在中间值的右侧区域继续按照上述方式查 找。
直到找到我们希望的数字。
 
l = [1,3,4,5,6,7,44,55,77,88,99]
def func(line,num):
    low=0#获取最小下标
    high=len(line)-1#获取最大下标
    while low <= high: #只有 最小下标小于最大下标才能证明有数据
        mid=(low+high)//2 #获取中间下标,实现二分
        if line[mid] == num: #如果这个中间数等于你想查找的值
            return mid #返回该下标
        elif  line[mid] > num:#如果该数值大于你想寻找的值
            high=mid-1#将中间下标的左移一位作为最大下标的值,实现搜索范围减半
        else:
            low=mid+1 #同理 最小下标右移
    return "error"
print(func(l,1))

#输出
0

猜你喜欢

转载自www.cnblogs.com/mjiu/p/8906303.html