算法 - pyhton - 二分查找

def bs(a, num):
    low = 0
    high = len(a) - 1
    mid = int(high / 2)
    
    while low<high: #當low == high 的時候查不到值那就不會存在了
        if num < a[mid]:
            high = mid
        elif num > a[mid]:
            low = mid+1 #這裏不+1 查找的數在最後一位的時候會形成死循環 例如 7 8 int((7+8)/2)=7 則永遠7 8 不能查找到數組的第8位
        elif num == a[mid]:
            return mid
        else:
            return -1
        mid = int((high + low) / 2)
    return -1


if __name__ == '__main__':
    a = [1, 2, 3, 4, 5, 6, 7, 8, 9]
    index = bs(a, -1)
    print(index)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章