Skip to content
本站總訪問量
本站訪客數 人次

二分搜尋

二分搜尋 (Binary Search) 是取 已排序資料的中間索引的值,來確認是否為要搜尋的數,若不是,則將資料以中間索引分為兩半。此時便比較待搜尋的值與中間索引的值的大小,若比較小,則選擇較小的那一半資料,反之亦然。接著再繼續從一半的資料中取中間索引的值做比較,重複以上的步驟,直到找到為止。

python
data = [1, 2, 3, 4, 5, 6, 7, 8, 9]

def binary_search(data, key):
    #設置選取範圍的指標
    low = 0
    upper = len(data) - 1
    while low <= upper:
        mid = (low + upper) / 2 #取中間索引的值
        if data[mid] < key:     #若搜尋值比中間的值大,將中間索引+1,取右半
            low = mid + 1
        elif data[mid] > key:   #若搜尋值比中間的值小,將中間索引+1,取左半
            upper = mid - 1
        else:                   #若搜尋值等於中間的值,則回傳
            return mid
    return -1


index = binary_search(data, 5)
if index >= 0:
    print(index)
else:
    print("not find")

牛刀小試

可以練Leetcode的

資料來源

[演算法] 二分搜尋 (Binary Search)

Contributors

The avatar of contributor named as lucashsu95 lucashsu95

Changelog