Python
 Computer >> コンピューター >  >> プログラミング >> Python

Bisect-Pythonの配列二分アルゴリズム


長いリストに挿入するたびにソート操作を実行すると、プロセッサが消費する時間の点でコストがかかる場合があります。 bisectモジュールは、挿入後にリストが自動的にソートされたままになることを保証します。この目的のために、それは二分アルゴリズムを使用します。モジュールには次の機能があります:

bisect_left()

このメソッドは、ソートされた順序を維持するために、リスト内の特定の要素の挿入ポイントを見つけます。リストにすでに存在する場合、挿入ポイントは既存のエントリの前(左側)になります。戻り値は、list.insert()

の最初のパラメーターとして使用できます。

bisect_right()

このメソッドはbisect_left()に似ていますが、a内のxの既存のエントリの後ろ(右側)にある挿入ポイントを返します。

bisect.insort_left()

このメソッドは、指定された値をソートされた順序で挿入します。これは、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]

  1. Pythonで配列を回転

    配列Aがあるとします。kステップ右に回転する必要があります。したがって、配列がA =[5、7、3、6、8、1、5、4]、およびk =3の場合、出力は[1,5,4,5,7,3,6、 8]。手順は次のようなものです [4,5,7,3,6,8,1,5] [5,4,5,7,3,6,8,1] [1,5,4,5,7,3,6,8] これを解決するために、次の手順に従います。 nは配列のサイズです k =k mod n A =n –kからendまでのAのサブアレイ+0からn– k –1までのAのサブアレイ 理解を深めるために、次の実装を見てみましょう- 例 class Solut

  2. Python配列二分アルゴリズム

    バイセクトアルゴリズムは、リスト内の位置を見つけるために使用されます。ここで、データを挿入してリストを並べ替えることができます。 Pythonにはbisectというモジュールがあります 。このモジュールを使用すると、二分法アルゴリズムを使用できます。 このモジュールを使用するには、-を使用してインポートする必要があります import bisect いくつかのバイセクト関連の操作があります。これらは-です メソッドbisect.bisect(list、element、begin、end) このメソッドは、ソートされたリスト内の位置を見つけるために使用されます。ここで、番号を配置でき、