python寫的二分查詢

2021-07-02 06:42:12 字數 588 閱讀 6527

二分查詢是一種時間複雜度為o(logn)的高效查詢演算法,而且二分的思想在許多基礎演算法裡都有涉及,分治加遞迴在很多問題裡都體現了強大的威力(比如經典的最長子序列問題和歸併排序問題),所以有必要學習一下。演算法比較簡單只能用來處理有序陣列,這裡用python來實現。

二分查詢

def search2(a,m):

low = 0

high = len(a) - 1

while(low <= high):

mid = (low + high)/2

midval = a[mid]

if midval < m:

low = mid + 1

elif midval > m:

high = mid - 1

else:

print mid

return mid

print -1

return -1

if __name__ == "__main__":

a = [1,5,6,8,21,29,30,54]

m = 6

search2(a,m)

Python二分查詢

二分查詢又稱折半查詢,首先,假設表中元素是按公升序排列,將表中間位置記錄的關鍵字與查詢關鍵字比較,如果兩者相等,則查詢成功 否則利用中間位置記錄將表分成前 後兩個子表,如果中間位置記錄的關鍵字大於查詢關鍵字,則進一步查詢前一子表,否則進一步查詢後一子表。重複以上過程,直到找到滿足條件的記錄,使查詢成...

python 二分查詢

搜尋過程從陣列的中間元素開始,如果中間元素正好是要查詢的元素,則搜尋過程結束 如果某一特定元素大於或者小於中間元素,則在陣列大於或小於中間元素的那一半中查詢,而且跟開始一樣從中間元素開始比較。如果在某一步驟陣列為空,則代表找不到。這種搜尋演算法每一次比較都使搜尋範圍縮小一半 param array ...

二分查詢(Python)

演算法介紹 二分查詢要求陣列為有序排列,每次取中間的數與target進行比較,若相等,則查詢成功 若中間數較大,則在前一部分查詢,反之,在後一部分查詢。其時間複雜度為o logn 演算法實現def binarysearch nums,target if not nums return false s...