二分查找python實(shí)現(xiàn)

算法 4th

# 二分查找
def rank(key, array): 
    """二分查找,查找key是否在數(shù)組array中    數(shù)組array必須有序    """ 
    lo = 0
    hi = len(array)-1
    while lo <= hi:
        mid = lo + int((hi - lo) / 2)
        # print(mid)
        if key < array[mid]: 
            hi = mid - 1 
        elif: key > array[mid]:
            lo = mid + 1
        else:
            return mid
    return -1
#  in 方法迭代查找
def fin(key, array):
    if key not in array:
        print(key)

if __name__ == '__main__': 
    import time
    start = time.time()
    # 測試數(shù)據(jù)目錄
    data_path = 'D:\Codes\python\Algorithms4th\\algs4-data\\' 
    # 讀取測試數(shù)據(jù),各100萬條數(shù)據(jù)
    whitefilelarge = open(data_path + 'largeW.txt', 'r')
    targetfilelarge = open(data_path + 'largeT.txt', 'r')
    whitelist = []
    for line in whitefilelarge: 
        whitelist.append(int(line))
        # 白名單排序
        whitelist.sort()
        for key in targetfilelarge:
        # 二分法
        if rank(int(key), whitelist) < 0: 
            print(key)
        # #  in方法迭代,可以對比測試下
        # fin(key, whitelist)
    whitefile.close()
    targetfile.close()
    end = time.time() 
    # 二分查找大概需要10秒多,for in迭代需要時(shí)間就比較長
    print('所用時(shí)間:%r秒' %(end-start))
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容