1. 程式人生 > >python演算法——二分查詢

python演算法——二分查詢

二分查詢

舉個例子-----猜數字:
假如需要你猜一個1–100的數字,每次都會告訴你猜大了或是猜小了
最笨的方法是:
1—猜小了
2—猜小了
3—猜小了

這種方法很慢,應為它幾乎要檢查所有的數字。
比較快的方法是:
你可以先猜50(0和100中間)—猜小了
在猜75(50和100中間)—猜大了
在猜63(50和75中間)—猜大了

這種方法很快,因為每次都會排除一半的錯誤答案
每次排除的數字個數為
50個元素----25個元素—13個元素—7個元素—4個元素----2個元素—1個元素
這樣的話不管正確答案是多少都能在7步內找到正確答案
這就是二分查詢。
*注:二分查詢的大O執行時間為logn(對數時間)

二分查詢程式碼

二分查詢程式碼如下:

def erfen(list, item):
    low = 0
    high = len(list)-1
    while low <= high:
        middle = int((low+high)/2)
        guess = list[middle]
        if guess == item:
            return middle
        if guess > item:
            high = middle-1
        else:
            low = middle+1
        

print(erfen([1, 3, 5, 7, 9], 9))

這裡返回的是元素下標。