欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

分别用递归、循环、bisect实现二叉查找(python实现)

程序员文章站 2024-03-19 21:31:28
...

1、递归实现二叉查找

def binary_search_recursion(lst,target,low,high):
    if high < low:
        return None
    middle = (low + high)//2
    if lst[middle] > target:
        return binary_search_recursion(lst,target,low,middle - 1)
    elif lst[middle] < target:
        return binary_search_recursion(lst,target,middle + 1,high)
    else:
        return middle

2、循环实现二叉查找

def binary_search_loop(lst,target):
    low, high = 0,len(lst)-1
    while low <= high:
        middle = (low + high)//2
        if lst[middle] > target:
            high = middle -1
        elif lst[middle] < target:
            low = middle + 1
        else:
            return middle
    return None

3、bisect实现二叉查找

import bisect

lst = [1,2,3,4,4,5,6]
print(bisect.bisect_left(lst,4))
print(bisect.bisect_right(lst,4))