Python二分查找库bisect

找暑期实习的时候做到某厂的笔试题里面用到这个,就总结一下。。。​

1. bisect_left(a, x, lo=0, hi=len(a))

  • 功能:在已排序序列 a 中查找元素 x 应该插入的位置,并返回最左侧的插入位置(index啊)。
  • 区别:如果有多个相同元素,bisect_left 返回最左侧的插入位置。
  • 默认情况下,查找范围是整个序列 a,但可以通过 lo 和 hi 参数来限制查找范围。

2. bisect_right(a, x, lo=0, hi=len(a))

  • 功能:在已排序序列 a 中查找元素 x 应该插入的位置,并返回最右侧的插入位置。
  • 区别:如果有多个相同元素,bisect_right 返回最右侧的插入位置。
  • 默认情况下,查找范围是整个序列 a,但可以通过 lo 和 hi 参数来限制查找范围。

3. insort(a, x, lo=0, hi=len(a))

  • 功能:将元素 x 插入到序列 a 中,使得插入后的序列 a 仍然有序。
  • 插入位置由 x 应该插入以保持序列有序的位置决定,这通常是 bisect_left() 返回的索引。
  • 可以通过 lo 和 hi 参数来限制查找范围。

4. insort_right(a, x, lo=0, hi=len(a))

  • 类似于 insort(),但是插入位置由 x 应该插入以保持序列有序的最后一个位置决定,这通常是 bisect_right() 返回的索引。
  • 在处理降序排序的序列时特别有用。

区别 bisect_left() 和 bisect_right()

在对于相同元素的处理的时候,bisect_left() 返回最左侧的插入位置,bisect_right() 返回最右侧的插入位置。
比如我现在要插入元素2:
Python二分查找库bisect_第1张图片

总结

bisect_left()bisect_right() 主要用于查找操作,返回的是插入位置的索引,其中 bisect_left() 返回第一个插入位置,而 bisect_right() 返回最后一个插入位置。insort()insort_right() 用于实际插入元素,insort() 在序列中插入元素时使用 bisect_left() 的返回值,而 insort_right() 使用 bisect_right() 的返回值。

你可能感兴趣的:(编程基础,python,算法,排序算法)