二分查詢演算法及其變式 Python

2021-08-28 18:42:44 字數 1018 閱讀 8165

二分查詢演算法是一種非常常用而且筆試很容易考到的演算法,但是演算法導論這本書上居然沒有講到,在這裡寫一篇blog做個記錄

def search(a, p, r, key):

if p > r:

return false

q = (p + r) // 2

if a[q] == key:

return q

elif a[q] > key:

return search(a, p, q - 1, key)

else:

return search(a, q + 1, r, key)

def main():

a = list(range(0, 100))

print(a)

print(search(a, 0, len(a) - 1, -1))

if __name__ == '__main__':

main()

def search(a, p, r):

if not a:

return false

mid = (p + r) // 2

if p + 1 == r:

if a[p] > a[r]:

return r

else:

return p

if a[mid] < a[p]:

return search(a, p, mid)

else:

return search(a, mid, r)

def main():

a = list(range(100))

for i in range(-100, 0):

x = search(a, 0, len(a) - 1)

print(x, a[x])

if '__main__' == __name__:

main()

翻轉陣列相關的都可以找到最小值以後轉化為經典演算法

二分查詢及其變式

對於在有序的向量可以使用二分查詢的方法,在log n log n log n 的時間複雜度內完成查詢。應當指出二分查詢必須基於 有序 的前提條件。在乙個陣列中,查詢乙個數字的基本程式如下所示。int binary search const vector int nums,int target ret...

二分查詢演算法及其變種

前言 二分查詢演算法也稱為折半查詢演算法,是一種在查詢演算法中普遍使用的演算法。其演算法的基本思想是 在有序表中,取中間的記錄作為比較關鍵字,若給定值與中間記錄的關鍵字相等,則查詢成功 若給定的值小於中間記錄的關鍵字,則在中間記錄的左半區間繼續查詢 若給定值大於中間記錄的關鍵字,則在中間記錄的右半區...

二分查詢演算法及其變種

前言 二分查詢演算法也稱為折半查詢演算法,是一種在查詢演算法中普遍使用的演算法。其演算法的基本思想是 在有序表中,取中間的記錄作為比較關鍵字,若給定值與中間記錄的關鍵字相等,則查詢成功 若給定的值小於中間記錄的關鍵字,則在中間記錄的左半區間繼續查詢 若給定值大於中間記錄的關鍵字,則在中間記錄的右半區...