二分法查詢演算法的實現
阿新 • • 發佈:2018-12-30
第一種:利用while迴圈實現
1 lst=[11,22,33,44,55,66,77,88,99,109,113,118,135,168] 2 n=int(input("請輸入需要查詢的數:")) 3 left=0 4 right=len(lst)-1 5 count=1 6 while left<=right: 7 middle=(left+right)//2 8 if n>lst[middle]: 9 left=middle+1 10 elif n<lst[middle]: 11 right=middle-1 12else: 13 print("第%d次後找到了!" % count) 14 print("已找到") 15 print(middle) 16 break 17 count=count+1 18 else: 19 print("不存在")
第二種:利用普通函式實現
1 def binarySearch(lis, num): 2 left = 0 3 right = len(lis) - 1 4 while left <= right:5 mid = (left + right) // 2 6 if num < lis[mid]: 7 right = mid - 1 8 elif num > lis[mid]: 9 left = mid + 1 10 else: 11 return mid 12 return -1
第三種:利用遞迴函式實現
1 def binary_search(lis,left,right,num):2 if left>right: #遞迴結束條件 3 return -1 4 mid=(left+right)//2 5 if num>lis[mid]: 6 left=mid+1 7 elif num<lis[mid]: 8 right=mid-1 9 else: 10 return mid 11 return binary_search(lis,left,right,num)