• python数组查找算法---bisect二分查找插入


    1 实例

    这个模块只有几个函数,

    一旦决定使用二分搜索时,立马要想到使用这个模块 

    [python] view plaincopy
     
     
     
    1. import bisect  
    2.   
    3. L = [1,3,3,6,8,12,15]  
    4. x = 3  
    5.   
    6. x_insert_point = bisect.bisect_left(L,x)  #在L中查找x,x存在时返回x左侧的位置,x不存在返回应该插入的位置..这是3存在于列表中,返回左侧位置1  
    7. print x_insert_point  
    8.   
    9. x_insert_point = bisect.bisect_right(L,x)  #在L中查找x,x存在时返回x右侧的位置,x不存在返回应该插入的位置..这是3存在于列表中,返回右侧位置3  
    10.   
    11. print x_insert_point  
    12.   
    13. x_insort_left = bisect.insort_left(L,x)  #将x插入到列表L中,x存在时插入在左侧  
    14. print L  
    15.   
    16. x_insort_rigth = bisect.insort_right(L,x) #将x插入到列表L中,x存在时插入在右侧      
    17.   
    18. print L  


    结果:

    1
    3
    [1, 3, 3, 3, 6, 8, 12, 15]
    [1, 3, 3, 3, 3, 6, 8, 12, 15]

    实际使用中

    [python] view plaincopy
     
     
     
    1. bisect.insort_left与 bisect.insort_right 差别不大,作
     
     
     
    转自:http://blog.csdn.net/xiaocaiju/article/details/6975714
     
    2  bisect模块
    Bisect模块提供的函数有:
    (1)查找
    bisect.bisect_left(a,x, lo=0, hi=len(a)) :
    查找在有序列表a中插入x的index。lo和hi用于指定列表的区间,默认是使用整个列表。
    bisect.bisect_right(a,x, lo=0, hi=len(a))
    bisect.bisect(a, x,lo=0, hi=len(a))
    这2个和bisect_left类似,但如果x已经存在,在其右边插入。
    (2)插入
    bisect.insort_left(a,x, lo=0, hi=len(a))
    在有序列表a中插入x。如果x已经存在,在其左边插入。返回值为index。 和a.insert(bisect.bisect_left(a,x, lo, hi), x) 的效果相同。
    bisect.insort_right(a,x, lo=0, hi=len(a))
    bisect.insort(a, x,lo=0, hi=len(a))
    和insort_left类似,但如果x已经存在,在其右边插入。
     
    可以函数可以分2类,bisect*,用于查找index。Insort*用于实际插入。默认重复时从右边插入。实际常用的估计是insort。
  • 相关阅读:
    求概率 Bag of mice CodeForces
    HDU 3853 LOOPS(概率DP)
    HDU 4405 Aeroplane chess (概率DP & 期望)
    求期望 ZOJ 3329 One Person Game
    poj 3774 Scout YYF I (矩阵优化的概率DP)
    codeforces 600D Area of Two Circles' Intersection
    codeforces 600A Extract Numbers
    codeforces 600C Make Palindrome
    POJ
    POJ
  • 原文地址:https://www.cnblogs.com/zknublx/p/9668708.html
Copyright © 2020-2023  润新知