python版二分搜尋演算法

2021-08-22 16:09:09 字數 1554 閱讀 8070

先用圖展示一下二分搜尋演算法的原理

二分搜尋演算法又稱為折半搜尋,下面**實現的是輸出要搜尋資料在陣列中的位置和查詢的次數:

演算法的步驟:

給乙個帶有n個值的陣列,陣列a是從小到大的排列

需要查詢t值在陣列的中的位置

1、先令l為0,r為n-1

2、如果存在l>r,則不需進行搜尋

3、令m(中間元素)為[(l+r)/2]

4、如果amt,令r=m-1返回第二步

6、當am=t時回傳值m

#迭代版本

n=

0def

dichotomy

(arr,start,end,key)

:global n #如果要在函式中給全域性變數賦值,需要用global關鍵字宣告

n+=1if end

return-1

mid=start+

int(

(end-start)/2

)if arr[mid]

return dichotomy(arr,mid+

1,end,key)

elif arr[mid]

>key:

return dichotomy(arr,start,mid-

1,key)

else

:return mid,n

#while的方法進行查詢

def

dichotomy_search

(arr,start,end,key)

: n=

0while start<=end:

n+=1 mid=start+

int(

(end-start)/2

)if arr[mid]

start=mid+

1elif arr[mid]

>key:

end=mid-

1else

:return mid ,n

arr=[1

,2,3

,4,5

,6,7

,9,11

,12,15

,17,20

,21,23

]a,b=dichotomy(arr,0,

14,3)

print

("方法一:\n查詢的位置:%d\n查詢的次數:%d\n"

%(a,b)

)c,d=dichotomy_search(arr,0,

14,17)

print

("方法二:\n查詢的位置:%d\n查詢的次數:%d\n"

%(c,d)

)

輸出的結果:
方法一:

查詢的位置:2

查詢的次數:4

方法二:

查詢的位置:11

查詢的次數:2

二分搜尋演算法

今天我勉強搞懂了二分查詢演算法,我覺得很有收穫,這是個不錯的演算法,希望還不知道 不懂二分演算法的朋友能看看!二分查詢 二分查詢的前提是陣列一定是有序的 傳入乙個陣列 t 傳入乙個查詢元素 t key 返回查詢結果 class myutil else if key.compareto x mid 0...

二分搜尋演算法

在電腦科學中,二分搜尋 英語 binary search 也稱折半搜尋 英語 half interval search 對數搜尋 英語 logarithmic search 是一 種在有序陣列中查詢某一特定元素的搜尋演算法。搜尋過程從陣列的中間元素開始,如果中間元素正好是要查詢的元素,則搜尋過程結束...

二分搜尋演算法

1.x y 2與x y x 2區別 運算子 取整朝零方向取整,5 2 2,5 2 2 用x y x 2好處是確保分界點總是靠近區間起點 2.基本二分查詢的實現方法 int bsearch int a,int x,int y,int v return 1 3.設lower bound和upper bo...