1. 程式人生 > >二分查找-python

二分查找-python

下標 需要 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 middle
8 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, R
7 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