Python有序陣列bisect模組

2021-10-24 06:30:56 字數 838 閱讀 2950

bisect模組採用經典的二分演算法查詢元素。模組提供下面幾個方法:

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

定位x在序列a中的插入點,並保持原來的有序狀態不變。引數lo和hi用於指定查詢區間。如果x已經存在於a中,那麼插入點在已存在元素的左邊。函式的返回值是列表的整數下標。

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

和上面的區別是插入點在右邊。函式的返回值依然是乙個列表下標整數。

bisect.bisect(a, x, lo=0, hi=len(a))

等同於bisect_right()。

注意,前面這三個方法都是獲取插入位置,也就是列表的某個下標的,並不實際插入。但下面三個方法實際插入元素,沒有返回值。

bisect.insort_left(a, x, lo=0, hi=len(a))

將x插入有序序列a內,並保持有序狀態。相當於a.insert(bisect.bisect_left(a, x, lo, hi), x)。碰到相同的元素則插入到元素的左邊。這個操作通常是 o(log n) 的時間複雜度。

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

同上,只不過碰到相同的元素則插入到元素的右邊。

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

等同於insort_right()。

有序陣列歸併

寫下這段文字純粹因為太生疏了。下午花了很多時間寫有序陣列的歸併陷入死胡同,結果是證明了兩個陣列歸併沒有輔助陣列時不幸的。通常的陣列歸併,對於大小為m和n的陣列,需要m n的輔助陣列,寫起來並不複雜。有次面試的時候要求寫乙個只有n輔助大小的做法。將b陣列拷到a陣列中,然後在a,b中選小的逐個放入a中。...

Java有序陣列

1 有序陣列簡介,以及優缺點 2 構建有序陣列 在陣列增刪改查功能裡,我們是如何讓陣列有序的呢?肯定是新增方法 1 我們在新增的時候可以進行乙個判斷 2 判斷我們這個新新增的資料到底是新增在哪個地方在哪個位置 接下來插入資料 public void insert int values 然後跳出這個迴...

有序陣列求平方有序對應陣列

977給定乙個按非遞減順序排序的整數陣列 a,返回每個數字的平方組成的新陣列,要求也按非遞減順序排序。示例 1 輸入 4,1,0,3,10 輸出 0,1,9,16,100 示例 2 輸入 7,3,2,3,11 輸出 4,9,9,49,121 有序,陣列,平方,還有序 1 直接平方之後重新排一下,so...