方法一:(while回圈法)
def binarySearch(arr,x): #自定義函式:arr:有序陣列;x:待查找值
low,high=0,len(arr)-1 #初始查詢下標索引
while low<=high: #回圈判斷
mid=int((low+high)/2) #獲取有序陣列中間值下標索引
if x==arr[mid]: #判斷待查找值與中間索引值相同
return mid #回傳索引下標
elif x>arr[mid]: #判斷待查值大于中間索引值時
low=mid+1 #開始索引下標賦新值
else: #判斷待查值小于中間索引值時
high=mid-1 #結束索引下標賦新值
return -1 #while回圈判斷不成立時
#測驗
arr=[2,3,4,10,40]
x=10
result=binarySearch2(arr,x)
print(result)
方法二:(遞回法)
def binarySearch(arr,s,e,x): #自定義遞回函式 arr:有序陣列,s:開始索引下標,e:結束索引下標,x:待查值
if s<=e: #回圈判斷
mid=int((e+s)/2) #獲取有序陣列中間值下標索引
if arr[mid]==x: #判斷待查找值與中間索引值相同
return mid #回傳索引下標
elif arr[mid] < x: #判斷待查值大于中間索引值時
return binarySearch(arr,mid+1,e,x) #遞回:開始索引下標賦新值
else: #判斷待查值小于中間索引值時
return binarySearch(arr,s,mid-1,x) #遞回:結束索引下標賦新值
else: #外層 if 回圈判斷不成立時
return -1
#測驗陣列
arr=[2,3,4,10,40]
x=10
#函式呼叫
result=binarySearch(arr,0,len(arr)-1,x)
print(result)
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/327760.html
標籤:Python
