首頁(yè)常見問題正文

Python中實(shí)現(xiàn)二分查找的2種方法是什么?

更新時(shí)間:2024-02-22 來(lái)源:黑馬程序員 瀏覽量:

IT培訓(xùn)班

  在Python中,實(shí)現(xiàn)二分查找通常有兩種方法:

  1.迭代法:

  使用循環(huán)來(lái)實(shí)現(xiàn)二分查找算法。

  2.遞歸法:

  使用遞歸函數(shù)來(lái)實(shí)現(xiàn)二分查找算法。

  下面是這兩種方法的簡(jiǎn)單實(shí)現(xiàn)示例:

       1.迭代法:

def binary_search_iterative(arr, target):
    left, right = 0, len(arr) - 1
    
    while left <= right:
        mid = (left + right) // 2
        if arr[mid] == target:
            return mid
        elif arr[mid] < target:
            left = mid + 1
        else:
            right = mid - 1
    
    return -1  # 如果目標(biāo)元素不在數(shù)組中,則返回 -1

  2.遞歸法:

def binary_search_recursive(arr, target, left, right):
    if left > right:
        return -1
    
    mid = (left + right) // 2
    if arr[mid] == target:
        return mid
    elif arr[mid] < target:
        return binary_search_recursive(arr, target, mid + 1, right)
    else:
        return binary_search_recursive(arr, target, left, mid - 1)

# 調(diào)用入口
def binary_search(arr, target):
    return binary_search_recursive(arr, target, 0, len(arr) - 1)

  這兩種方法都可以有效地在已排序的數(shù)組中查找目標(biāo)元素的位置。迭代法使用循環(huán)來(lái)進(jìn)行查找,而遞歸法則利用遞歸函數(shù)來(lái)實(shí)現(xiàn)。

分享到:
在線咨詢 我要報(bào)名
和我們?cè)诰€交談!