1. 程式人生 > >二分查詢Python3 實現

二分查詢Python3 實現

# -!- coding: utf-8 -!-
# !/usr/bin/env python 3.6.3
# author: Vivian
# time: 2018/9/22

# 是排序後的序列,且支援下標索引的順序表
# 二分查詢適用物件:有序順序表
def binary_search(alist, data):

    # if len(alist):#查詢的終止遞迴條件
    #     mid = (len(alist)) // 2
    #     if alist[mid] == data:
    #         return True
    #     elif data < alist[mid]:
    #         return binary_search(alist[:, mid], data)
    #     else:
    #         return binary_search(alist[mid + 1:], data)
    # else:
    #     return False
    #為何我編寫的上標越界,由於使用了None,區別於node=None
    mid = (len(alist)) // 2
    #if len(alist) ==0:#終止的失敗條件,正確
    #if alist == []:#正確
    #if alist is No=ne:這種是錯誤表達
    if len(alist) == 0:  # 終止的失敗條件,正確
        return False
    elif data==alist[mid]:#成功條件
        return True
    elif data < alist[mid]:#遞迴條件
        return binary_search(alist[:, mid], data)
    else:
        return binary_search(alist[mid + 1:], data)


if __name__=='__main__':
    a=[0,1,2,3,4,5,6,7,8,9]
    result1=binary_search(a,8)
    print(result1)
    result2=binary_search(a,100)
    print(result2)