數據結構-4.簡單算法python實現:二分查找binary_search

python3.5

時間複雜度:O(logn)

1.二分查找思想:

對有序序列(必須以順序表結果存儲)對半查找,根據大小比較,往上半折搜索或往下半折搜索,後面以此推類,直到找到結果

2.python代碼實現(遞歸與非遞歸)


#coding utf-8
def binary_search(alist,item):
    """二分查找"""
    # 遞歸
    n=len(alist)
    if n>0:
        mid=n//2
        if alist[mid]==item:
            return True
        elif item<alist[mid]:
            return binary_search(alist[:mid],item)
        else:
            return binary_search(alist[mid+1:],item)
    return False
def binary_search1(alist,item):
    """非遞歸"""
    n = len(alist)
    first=0
    end=n-1

    while first <= end:
        mid =(first+end)//2
        if alist[mid] == item:
            return True
        elif item< alist[mid]:
            end  = mid - 1
        else:
            first = mid + 1
    return False


if __name__=="__main__":
    li=[17,20,26,31,44,54,55,77,93]
    li=[int(i) for i in li]
    print(binary_search(li,55))
    print(binary_search(li,100))

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章