二分法 - Python 中的数组二分法算法

pythonserver side programmingprogramming更新于 2023/12/23 4:32:00

在长列表上每次插入后执行排序操作可能会耗费处理器的时间。二分法模块可确保列表在插入后保持自动排序。为此,它使用二分法算法。该模块具有以下功能:

bisect_left()

此方法定位列表中给定元素的插入点以保持排序顺序。如果它已存在于列表中,则插入点将位于任何现有条目之前(左侧)。返回值可以用作 list.insert() 的第一个参数

bisect_right()

此方法类似于 bisect_left(),但返回一个插入点,该插入点位于 a 中任何现有 x 条目之后(右侧)。

bisect.insort_left()

此方法按排序顺序将给定值插入 a。这相当于 a.insert(bisect.bisect_left(a, x, lo, hi), x)

bisect.insort_right()

bisect.insort()

这两种方法都类似于 insort_left(),但将给定值插入列表中任何现有相同值的条目之后。

示例

>>> nums = [45,21,34,87,56,12,5,98,30,63]
>>> nums.sort()
>>> nums
[5, 12, 21, 30, 34, 45, 56, 63, 87, 98]
>>> import bisect
>>> p = bisect.bisect_left(nums,50)
>>> p
6
>>> nums.insert(p,50)
>>> nums
[5, 12, 21, 30, 34, 45, 50, 56, 63, 87, 98]
>>> bisect.insort(nums, 29)
>>> nums
[5, 12, 21, 29, 30, 34, 45, 50, 56, 63, 87, 98]

相关文章