Python 中的二分算法函数

pythonserver side programmingprogramming

此模块支持按排序顺序维护列表,而无需在每次插入新元素后对列表进行排序。我们将重点介绍两个函数,即 insort_left 和 insort_right。

insort_left

此函数在所需位置插入数字后返回排序后的列表,如果元素已存在于列表中,则将元素插入到最左边的可能位置。此函数有 4 个参数,必须处理的列表、要插入的数字、要考虑的列表中的起始位置、必须考虑的结束位置。起始和终止位置的默认值分别为 0 和字符串的长度。

这与 inser_left 类似,不同之处在于在插入现有条目后插入新元素,而不保持严格的排序顺序。

语法

bisect.insort_left(a, x, lo=0, hi=len(a))
bisect.insort_left(a, x, lo=0, hi=len(a))
a 是给定的序列
x 是要插入的数字

示例

在下面的例子中,我们看到我们获取一个列表并首先对其应用 bisect.insort_left 函数。

import bisect

listA = [11,13,23,7,13,15]
print("Given list:",listA)
bisect.insort_left(listA,14)
print("Bisect left:\n",listA)

listB = [11,13,23,7,13,15]
print("Given list:",listB)
bisect.insort_right(listB,14,0,4)
print("Bisect righ:\n",listB)

输出

运行上述代码得到以下结果 −

Given list: [11, 13, 23, 7, 13, 15]
Bisect left:
   [11, 13, 23, 7, 13, 14, 15]
Given list: [11, 13, 23, 7, 13, 15]
Bisect righ:
   [11, 13, 14, 23, 7, 13, 15]

相关文章