考研结束的我又拿起了python书~
今天尝试用算法书回忆起曾经学的稀烂的python
第一个算法是:二分法查找
对于这本人民邮电出版社的书,不知道是我的问题还是其他,其中二分法的代码在Geany上运行出现了各种错误,如若有幸能被有同样疑惑的小伙伴看到,希望我修改后的代码能够有所帮助~
书中代码于Page 7
修改后的代码:
#coding:gbk #在编辑器中这个一定不能忘
def binary_reaserch(list, item):
low = 0
high = len(list)-1
while low <= high:
mid = (low+high)//2 #书中下半部分的代码只有一个"/",而联系上下文应当取向下整数,因此为"//"
guess = mid #书中原本为取列表,但是由于后面的大小比较,而列表无法进行比较,因此不应当加上list[],因此这一步其实也可省略直接取mid
if guess == item:
return mid
if guess > item:
high = mid -1
else:
low = mid + 1
return None
mylist = [1,3,5,7,9]
print(binary_reaserch(mylist,3)) #print函数的正确调用应为print(),书中的print加空格的方式至少在学过《从入门到实践》后是无法实现的(这本书强调的是print("Hello!Python World!"))
print(binary_reaserch(mylist,-1))