Pythonの挿入ソートとは何ですか?
挿入ソートは、配列をソートする簡単な方法です。この手法では、配列は実質的にソートされた部分とソートされていない部分に分割されます。ソートされていないパーツの要素が選択され、ソートされたパーツの正しい位置に配置されます。
-
配列要素は1からnまでトラバースされます。
-
位置iの配列要素が前の要素よりも大きい場合は、移動する必要はありません。
-
位置iの配列要素がその前の要素よりも小さい場合、それよりも小さい前の要素が見つかるまで、または配列の左端の位置に到達するまで、左にシフトする必要があります。
例
例を使用すると、上記のアイデアをより明確に理解できます。次の配列があるとします-
4 | 6 | 1 | 7 | 2 | 5 |
インデックス1から配列のトラバースを開始する必要があります(インデックス0には先行するものがないため)。
インデックス1で −
6は前のバージョンよりも大きいため、何もする必要はありません。
4 | 6 | 1 | 7 | 2 | 5 |
インデックス2で −
4 | 6 | 1 | 7 | 2 | 5 |
1は前任者よりも小さいため、前任者がそれよりも小さいか、インデックス0に到達しない限り、左方向にシフトする必要があります。この場合、インデックス0に到達します。
4 | 6 | 1 | 7 | 2 | 5 |
インデックス3で −
1 | 4 | 6 | 7 | 2 | 5 |
インデックス4で −
1 | 4 | 6 | 7 | 2 | 5 |
2より小さい前任者が見つかるまで、2を左にシフトします。
1 | 2 | 4 | 6 | 7 | 5 |
インデックス5で −
1 | 2 | 4 | 6 | 7 | 5 |
5より小さい前任者が見つかるまで、5を左にシフトします。
1 | 2 | 4 | 5 | 6 | 7 |
したがって、ソートされた配列を取得します。
挿入ソートは、O(n ^ 2)時間計算量とO(1)空間計算量を備えたインプレースソートアルゴリズムです。
例
def insertionSort(arr): for i in range(1, len(arr)): key = arr[i] #get each element j = i-1 while j >= 0 and key &lit; arr[j] : #keep shifting until reaching index 0 or getting an element smaller than key arr[j + 1] = arr[j] j=j-1 arr[j + 1] = key arr = [4,6,1,7,2,5] insertionSort(arr) for i in range(len(arr)): print (arr[i],end=" ")
出力
1 2 4 5 6 7
-
Pythonプログラムでの挿入ソート
この記事では、Python3.xでの挿入ソートの実装について学習します。またはそれ以前。 アルゴリズム ソートされた配列を各反復で拡張することにより、入力要素を反復します。 現在の要素を、並べ替えられた配列で使用可能な最大値と比較します。 現在の要素の方が大きい場合は、その要素をそのままにして次の要素に移動します。それ以外の場合は、並べ替えられた配列内で正しい位置を見つけて、配列内のその位置に移動します。 これは、並べ替えられた配列内の現在の要素よりも大きいすべての要素を右にシフトすることで実現されます。 それでは、アルゴリズムの視覚的表現を見てみましょう
-
挿入ソート用のPythonプログラム
この記事では、Python3.xでの挿入ソートの実装について学習します。またはそれ以前。 アルゴリズム 1. Iterate over the input elements by growing the sorted array at each iteration. 2. Compare the current element with the largest value available in the sorted array. 3. If the current element is greater, then it leaves the element in its place &n