通过学习二分查找算法,一起学习python。二分法适用于有序的数据查询,且已知顺序。之前听国外的教授讲课,他们拿的是一本厚厚的电话簿来做实验的:先让一个同学把电话簿,对半撕开;这样查找的范围就可以确定要搜索的电话号码是在上半部或者下半部。
这个过程就跟我们小学拿着新华字典查某个字一样的,你不必从第一页开始,你只需要翻开到这个字所属的拼音的那个区域范围,然后再去查找。
程序非常的简单,具体如下:
def binary_search(list,item):
low = 0
high = len(list)-1
while low <= high:
mid = (low+high) / 2
guess = list[mid]
if guess == item:
return mid
if guess > item:
high = mid - 1
else:
low = mid + 1
return None
my_list = [1, 3, 5, 7, 9]
print binary_search(my_list,3)
PS:很多知识点,听起来很可怕。其实实践也来也是蛮简单的。希望小伙伴们不要害怕。Give me five!周一愉快!