二分查詢是一種比較高效的搜尋演算法,是一種可以在有序陣列中搜尋到特定元素的演算法。
例如,我們要在陣列中搜尋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...