Python版二分查找

# 操作对象,排序顺序表---list
alist = [17, 17, 20, 26, 31, 44, 44, 54, 55, 77, 93]


# 递归二分查找
def binary_search(list1, num):
    length = len(list1) - 1
    # 当元素为空时,没有找到返回False
    if length < 0:
        return False
    mid = length // 2
    if list1[mid] == num:
        return True
    elif num < list1[mid]:
        return binary_search(list1[:mid], num)
    else:
        return binary_search(list1[mid + 1:], num)


# 循环二分查找
def binary_search1(list1,num):
    first = 0
    last = len(list1)-1
    mid = (first+last)//2
    while first <= last:
        mid = (first + last) // 2
        if list1[mid] == num:
            return True
        elif num < list1[mid]:
            last = mid-1
        else:
            first = mid+1
    else:
        return False


if __name__ == '__main__':
    for i in [10, 23, 44, 56, 24, 78, 100, 17]:
        print(binary_search1(alist, i))
      ```
posted @ 2020-12-30 20:58  旁人怎会懂  阅读(83)  评论(0)    收藏  举报