欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

二分查找简单例子

程序员文章站 2023-12-21 21:21:34
...

在电话簿中根据名字查找电话号码
(电话簿是一个字典)

def phone_number(phone_list,name):
    high = len(phone_list)-1
    low = 0
    #因为python列表是从0开始记做第一个元素,所以high要列表长度-1,电话簿是一个字典
    guess0 = []
    for names in phone_list.keys():
        guess0.append(names)
        #先将字典中所有的名字(键)取下来,存储到空列表中
    while low <= high:
        #保证循环中,至少有1个元素,并且只有一个元素的时候,说明算法成功找到了要找的元素(当查找的元素是最后一次的时候,low=high的值)
        mid = (high+low)//2
        #  //2 表示如果mid不是整数,python会向下取整
        guess = guess0[mid]
        if guess == name:
            return phone_list[guess]
        #如果名字对上了,返回名字对应的电话号码
        elif guess > name:
            #名字字母比大小
            high = mid - 1
        elif guess < name:
            low = mid + 1

    else:
        return None
    #如果找遍整个列表都没有找到,那么返回none


my_list = {'a':12323,'b':4564654,'c':465465}
print(phone_number(my_list,'a'))

上一篇:

下一篇: