二分查找-python
阿新 • • 發佈:2017-11-26
下標 需要 Coding div turn pan 不同的 二分查找 earch
假定有n≥1個不同的整數已經按從小到大的順序存放在數組元素a[0], … ,a[n-1]中。我們需要做的是判斷整數x是否存放在某個數組元素中,如果是,即x=a[j],則返回j(被找到元素的下標);否則返回-1。
1 def BinarySearch(A,x): 2 n = len(A) 3 left, right = 0, n-1 4 while left <= right: 5 middle = (left+right+1)/2 6 if x == A[middle]: 7 return middle8 elif x > A[middle]: 9 left = middle + 1 10 else: 11 right = middle - 1 12 return -1 # not found
遞歸算法:
1 # -*- coding: cp936 -*- 2 #返回x在A中的index 3 def BinarySearch(A,x,L,R): 4 n = len(A) 5 # L,R 分別為要查找的邊界,可取0,n-1 6 left, right = L, R7 while left <= right: 8 middle = (left + right +1)/2 9 if x == A[middle]: return middle 10 elif x > A[middle]: 11 return BinarySearch(A, x, middle + 1, right) 12 else: 13 return BinarySearch(A, x, left, middle - 1)
二分查找-python