簡介二分查詢演算法與相關的Python實現示例

2022-10-04 22:21:26 字數 1407 閱讀 6026

二分查詢binary search的思想:

以有序表表示靜態查詢表時,查詢函式可以用二分查詢來實現。

二分查詢(binary search)的查詢過程是:先確定待查記程式設計客棧錄所在的區間,然後逐步縮小區間直到找到或找不到該記錄為止。

1二分查詢的時間複雜度是o(log(n)),最壞情況下的時間複雜度是o(n)。

假設 low 指向區間下界,high 指向區間上界,mid 指向區間的中間位置,則 mid  = (low + high) / 2;

具體過程:

1.先將關鍵字與 mid 指向的元素比較,如果相等則返回mid。

2.關鍵字小於 mid 指向的元素關鍵字,則在 [ low,  mid-1 ]區間中繼續進行二分查詢。

3.關鍵字大於m 指向的元素關鍵字,則在[ mid +1 , high] 區czgiasmam間中繼續進行二分查詢。

用python實現二分查詢示例:

>>> def find(self, num):

l = len(self)

first = 0

end = l - 1

mid = 0

if l == 0:

self.insert(0,num)

return false

while first < end:

mid = (first + end)/2

if num > self[mid]:

first = mid + 1

elifwww.cppcns.com num < self[mid]:

end = mid - 1

else:

break

if first == end:

if self[first] > num:

self.insert(first, num)

return false

elif self[first] < num:

self.insert(first + 1, num)

return false

else:

return true

elif first > end:

self.insert(first, num)

return false

else:

return true

>&czgiasmamgt;> list_d = ['a','b','c','d','e','f','d','t']

>>> value_d = 't'

>>> aa=find(list_d,value_d)

>>> aa

true

>>> value_d='ha'

>>> aa=find(list_d,value_d)

>>> aa

false

本文位址:

二分查詢相關

題目1.左旋陣列中的查詢 附 字串左旋方法 的題目2 解法 將這個問題可以分解成子問題。要是帶查詢值落在單調有序區,那就直接二分查詢了,落在左旋陣列區,就遞迴查詢。也可以把它簡化成乙個遞迴,就用fun,不用bs是一樣的。題目2.左旋陣列中的最小值 止條件,當陣列最後剩下兩個數的時候,這就是最小規模了...

二分查詢相關

題目1.左旋陣列中的查詢 附 字串左旋方法 的題目2 解法 將這個問題可以分解成子問題。要是帶查詢值落在單調有序區,那就直接二分查詢了,落在左旋陣列區,就遞迴查詢。也可以把它簡化成乙個遞迴,就用fun,不用bs是一樣的。題目2.左旋陣列中的最小值 止條件,當陣列最後剩下兩個數的時候,這就是最小規模了...

順序查詢與二分查詢演算法

順序查詢演算法 順序查詢是非常簡單常用的查詢演算法,基本思路 從第乙個元素m開始逐個與需要查詢的元素x進行比較,當比較到元素值相同 即m x 時返回元素m的下標,如果比較到最後都沒有找到,則返回 1。該演算法的時間複雜度為o n 如果資料量很大時查詢效率會很低。1 include23 順序查詢演算法...