二分查找简单例子
程序员文章站
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'))