美文网首页
二分查找python实现

二分查找python实现

作者: 青枫 | 来源:发表于2016-05-31 10:51 被阅读0次

算法 4th

# 二分查找
def rank(key, array): 
    """二分查找,查找key是否在数组array中    数组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()
    # 测试数据目录
    data_path = 'D:\Codes\python\Algorithms4th\\algs4-data\\' 
    # 读取测试数据,各100万条数据
    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迭代需要时间就比较长
    print('所用时间:%r秒' %(end-start))

相关文章

  • 算法之二分查找

    二分查找 二分查找是著名、高效并有应用广泛的查找算法。 二分常规实现 1.循环实现 下面我用python语言实现循...

  • 算法之二分查找

    排序算法 二分查找 用于有序元素列表的查找性能: Python实现: C#实现

  • Python实现二分法

    Python实现二分查找 为什么需要二分查找 如果查找1-100内任意一个数字?顺序查找(简单查找)从1开始或者1...

  • 简单算法

    冒泡排序: while 实现的二分查找: 递归实现二分查找:

  • 分治算法(swift二分法排序递归实现)

    二分查找 1、二分查找(Binary Search) 2、二分查找的基本思想 swift算法实现

  • 二分查找

    网上找到的图片便于理解 二分查找递归实现与循环实现代码: /** 二分查找 1.二分查找又称折半查找,它是一种效率...

  • 二分查找

    数据顺序存储,有序序列 O(logn) 递归实现二分查找: 非递归实现二分查找:

  • 双指针(链表、数组)

    二分查找用于有序的排列python中的二分查找模块bisect,Python中的list.inidex时间复杂度是...

  • 二分查找python实现

    算法 4th

  • 二分查找-python实现

网友评论

      本文标题: 二分查找python实现

      本文链接:https://www.haomeiwen.com/subject/axscdttx.html