bisect 模块包含两个主要函数,bisect 和 insort,两个函数都利用
二分查找算法来在有序序列中查找或插入元素。
一、用bisect.bisect来搜索元素的位置
下方是一个代码示例:
bisect(haystack, needle)
在haystack
里搜索needle
的位置【其中 haystack
必须是一个有序的序列】,该位置满足的条件是,把needle
插入这个位置之后,haystack
还能保持升序。也就是在说这个函数返回的位置前面的值,都小于或等于 needle
的值。
另外,你可以先用 bisect(haystack, needle)
查找位置 index
,再
用haystack.insert(index, needle)
来插入新值。但你也可用
insort
来一步到位,并且后者的速度更快一些。
import bisect
import sys
HAYSTACK = [1, 4, 5, 6, 8, 12, 15, 20, 21, 23, 23, 26, 29, 30]
NEELDLES = [0, 1, 2, 5, 8,