首頁 >後端開發 >Python教學 >這個 Python 二分查找函數能找到該元素嗎?

這個 Python 二分查找函數能找到該元素嗎?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-11-28 16:44:11238瀏覽

Does This Python Binary Search Function Find the Element?

Python 中的二分搜尋(二分)

判斷元素是否存在於排序清單或元組中是程式設計中的常見任務。雖然 Python 提供了用於二分搜尋的 bisect 模組,但即使未找到該項目,其 bisect_left 和 bisect_right 函數也會傳回一個位置。為了滿足這項需求,引入了明確傳回布林值的二分搜尋的 Python 實作。

建議的解決方案

binary_search 函數採用排序清單'a' 、要搜尋的元素「x」以及搜尋範圍的可選開始和結束位置「lo 」和「hi」。它使用 bisect 模組中的 bisect_left 函數來定位列表“a”中“x”的插入點“pos”。

如果「pos」小於「hi」且元素位於「pos」 ' 等於 'x',則找到 'x',並傳回 'pos' 作為其在列表中位置的索引。但是,如果 'pos' 到達列表末尾(即 'pos' 等於 'hi'),則找不到 'x',並且函數傳回 -1。

from bisect import bisect_left

def binary_search(a, x, lo=0, hi=None):
    if hi is None: hi = len(a)
    pos = bisect_left(a, x, lo, hi)                  # find insertion position
    return pos if pos != hi and a[pos] == x else -1  # don't walk off the end

用法範例

例如,給定一個排序清單“a”和要搜尋的元素“x”, binary_search 函數可以如下使用:

result = binary_search(a, x)

if result == -1:
    print("Element not found")
else:
    print("Element found at index", result)

這個簡潔的Python函數提供了一種便捷的方法來執行二分搜尋以檢查排序清單中的元素存在性,同時保持二分搜尋的簡單性和效率。

以上是這個 Python 二分查找函數能找到該元素嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn