zoukankan      html  css  js  c++  java
  • Python学习笔记:bisect模块实现二分搜索

      在Python中可以利用bisect模块来实现二分搜索,该模块包含函数只有几个:

    import bisect
    
    L = [1,3,4,5,5,5,8,10]
    x = 5
    
    bisect.bisect_left(L,x) # 3
    # 在L中查找x,x存在时返回x最左侧的位置,x不存在返回应该插入的位置
    
    bisect.bisect_right(L,x) # 6
    # 在L中查找x,x存在时返回x最右侧的位置,x不存在返回应该插入的位置
    
    bisect.insort_left(L,x) # [1, 3, 4, 5, 5, 5, 5, 8, 10]
    # 将x插入到列表L中,x存在时插入在左侧
    
    bisect.insort_right(L,x) # [1, 3, 4, 5, 5, 5, 5, 5, 8, 10]
    # 将x插入到列表L中,x存在时插入在右侧

      bisect.insort_leftbisect.insort_right貌似没什么差别,作用基本一致。

      另外,bisect.bisect(L,x)与bisect_right相同,insort与insort_right相同。

      例子:

    import bisect
    import random
    
    mylist = list()
    for i in range(10):
        num = random.randint(1,100)
        index = bisect.bisect_left(mylist, num)
        bisect.insort_left(mylist, num)
        print('num ', str(num), 'index ', str(index), 'list ', mylist)
        
    mylist = list()
    for i in range(10):
        num = random.randint(1,100)
        index = bisect.bisect_right(mylist, num)
        bisect.insort_right(mylist, num)
        print('num ', str(num), '	index ', str(index), '	list ' ,mylist)

       输出:

    num  72 index  0 list  [72]
    num  89 index  1 list  [72, 89]
    num  41 index  0 list  [41, 72, 89]
    num  45 index  1 list  [41, 45, 72, 89]
    num  100 index  4 list  [41, 45, 72, 89, 100]
    num  1 index  0 list  [1, 41, 45, 72, 89, 100]
    num  69 index  3 list  [1, 41, 45, 69, 72, 89, 100]
    num  4 index  1 list  [1, 4, 41, 45, 69, 72, 89, 100]
    num  76 index  6 list  [1, 4, 41, 45, 69, 72, 76, 89, 100]
    num  11 index  2 list  [1, 4, 11, 41, 45, 69, 72, 76, 89, 100]
    
    num  82         index  0        list  [82]
    num  39         index  0        list  [39, 82]
    num  27         index  0        list  [27, 39, 82]
    num  78         index  2        list  [27, 39, 78, 82]
    num  9  index  0        list  [9, 27, 39, 78, 82]
    num  80         index  4        list  [9, 27, 39, 78, 80, 82]
    num  58         index  3        list  [9, 27, 39, 58, 78, 80, 82]
    num  42         index  3        list  [9, 27, 39, 42, 58, 78, 80, 82]
    num  59         index  5        list  [9, 27, 39, 42, 58, 59, 78, 80, 82]
    num  50         index  4        list  [9, 27, 39, 42, 50, 58, 59, 78, 80, 82]

     END 2018-11-01 23:25:37

  • 相关阅读:
    [AX]AX2012开发新特性outer join中使用QueryFilter
    [AX]AX2012开发新特性表继承
    docker环境安装
    poj 3469
    poj 1187
    poj 1159
    poj 2135
    poj 1273
    poj 1458
    poj 1141
  • 原文地址:https://www.cnblogs.com/hider/p/9893341.html
Copyright © 2011-2022 走看看