中間平分 - Python 中的陣列中間平分演算法


在長列表中每次插入後執行排序操作在時間消耗方面可能很昂貴。中間平分模組確保列表在插入後自動排序。出於此目的,它使用中間平分演算法。該模組具有以下函式

bisect_left()

此方法找到用於保持排序順序的列表中給定元素的插入點。如果它已存在於列表中,則插入點將在任何現有項之前(左邊)。返回值可以用作 list.insert() 的第一個引數

bisect_right()

此方法與 bisect_left() 類似,但返回的插入點在列表中任何現有項的後面(右邊)。

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]

更新日期: 2019 年 7 月 30 日

532 次瀏覽

開啟您的 職業生涯

完成課程獲取認證

開始
廣告
© . All rights reserved.