二分查詢演算法原理和實現

2021-09-29 17:28:06 字數 1254 閱讀 6291

​ 二分查詢是一種比較高效的搜尋演算法,是一種可以在有序陣列中搜尋到特定元素的演算法。

例如,我們要在陣列中搜尋4

還是先找到陣列的中間位置,這次因為是偶數,我們就取1吧(這裡是按照自己取中間位置的演算法實際去取),4比1小,那麼要往右邊陣列搜尋,右邊陣列即為;

那麼,陣列只有乙個元素,那麼中間位置肯定就是自己了即4,發現就是我們搜尋,那麼可以返回

二分查詢一般有兩種實現方法:使用遞迴和不使用遞迴。

def

search

(arr, target)

:"""

不使用遞迴的二分查詢

:param arr: 待查詢陣列

:param target: 查詢目標

:return:

"""left =

0 right =

len(arr)-1

while left <= right:

mid =

int(

(left + right)/2

)if arr[mid]

== target:

return mid

elif arr[mid]

> target:

right = mid -

1else

: left = mid +

1return

-1

def

search2

(arr, target)

: index = search_recursion(arr, target,0,

len(arr)-1

)return index

defsearch_recursion

(arr, target, left, right)

:if left > right:

return-1

mid =

int(

(left + right)/2

)if arr[mid]

== target:

return mid

elif arr[mid]

> target:

return search_recursion(arr, target, left, mid-1)

else

:return search_recursion(arr, target, mid+

1, right)

二分查詢演算法實現

include include using namespace std define n 20 int binary chop int a,int n,int j,int k 找到即返回下標 else if a mid k high mid 1 尋找的值小於中間值,則在左邊一般查詢 else low...

簡述二分查詢演算法原理

舉例 當需要查詢乙個公升序陣列中是否包含某個數時,可以使用二分查詢演算法 要求陣列必須有序 就是將陣列的中間值與該數比較,若該數大於中間值,則表明在該陣列中間值的右側,反之亦然,這個時候,將改變起始值或末尾值在將該數,與重新選定的區域中間值判斷,依次類推,直到結束 author zhangyu da...

查詢演算法 二分查詢python實現

二分查詢 時間複雜度為o logn 空間複雜度為o 1 二分查詢也叫做折半查詢,是一種在有序陣列中查詢某一特定元素的查詢演算法。查詢過程從中間元素開始。如果中間元素正好是要查詢的元素,則查詢過程結束。def binary search1 arr,value binary search1 尋找與val...