通過學(xué)習(xí)二分查找算法,一起學(xué)習(xí)python。二分法適用于有序的數(shù)據(jù)查詢昧谊,且已知順序。之前聽國外的教授講課酗捌,他們拿的是一本厚厚的電話簿來做實(shí)驗(yàn)的:先讓一個(gè)同學(xué)把電話簿呢诬,對半撕開;這樣查找的范圍就可以確定要搜索的電話號(hào)碼是在上半部或者下半部胖缤。
這個(gè)過程就跟我們小學(xué)拿著新華字典查某個(gè)字一樣的尚镰,你不必從第一頁開始,你只需要翻開到這個(gè)字所屬的拼音的那個(gè)區(qū)域范圍哪廓,然后再去查找狗唉。
程序非常的簡單,具體如下:
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:很多知識(shí)點(diǎn)涡真,聽起來很可怕敞曹。其實(shí)實(shí)踐也來也是蠻簡單的。希望小伙伴們不要害怕综膀。Give me five澳迫!周一愉快!