Python挿入ソートの書き方
Python挿入ソートは、ゲームカードのソートと同じように機能します。挿入ソートを使用するには、ソートされたリストとソートされていないリストの2つのリストを作成します。並べ替えられていないリストの各アイテムを、そのアイテムを並べ替えるまで比較します。挿入ソートは、Python言語の一般的な標準アルゴリズムです。
手札のトランプを並べ替えたことがありますか?これは、Python挿入ソートの概念を考える1つの方法です。少数の要素のみでリストをソートする必要がある場合、挿入ソートはあなたの背中になります。
挿入ソートは、配列内の各反復の後に、ソートされていない要素を正しい場所に配置します。
このガイドでは、挿入ソートとは何か、そしてそれらがどのように機能するかについて説明します。例を参照して、Pythonで挿入ソートを実装する方法について説明します。これにより、このソートアルゴリズムを開始できます。
Python挿入ソートとは何ですか?
挿入ソートは、リストをソート済みと非ソートの2つのサブリストに分割します。次に、並べ替えられていないリストの各要素を比較し、リストの各アイテムが並べ替えられるまで比較を続けます。
挿入ソートアルゴリズムは、ソートされたアイテムをソートされたサブリストに移動し、ソートされていないサブリストから削除します。両方のサブリストは同じ配列の一部ですが、アイテムが並べ替えられているかどうかを区別します。
挿入ソートは、カードゲームで手札のカードのセットをソートする方法と同じように考えることができます。
カードのリストを1つずつ移動し、それらを相互に比較します。ソートされたカードはあなたの手の左側に表示されます。並べ替えられていないカードは、すべて並べ替えるまで右側に表示されます。
参加者の81%は、ブートキャンプに参加した後、自分たちの技術的な仕事の見通しについてより自信を持っていると述べました。今日のブートキャンプにマッチしましょう。
平均的なブートキャンプの卒業生は、ブートキャンプの開始から最初の仕事を見つけるまで、キャリアの移行に6か月も費やしませんでした。
Python挿入ソートはどのように機能しますか?
ビジネスに取り掛かり、挿入ソートアルゴリズムを使用して配列をソートしましょう。次のソートされていない配列について考えてみます。
9 | 4 | 3 | 5 |
挿入ソートでは、最初の要素はソートされていると見なされます。 2番目の要素は、独自の変数に格納されます。この変数をcurrent_numberと呼びます。 。
並べ替え | current_number | | |
9 | 4 | 3 | 5 |
current_numberを比較する必要があります アイテムが配列の最初の位置にあります。 current_numberの場合 最初の要素よりも大きい場合、同じ場所にとどまります。それ以外の場合、current_numberは最初の要素の前に移動されます。
4は9以下なので、これら2つの要素は場所を入れ替えます。
4 | 9 | 3 | 5 |
リストの最初の2つの要素は並べ替えられています。次に、current_numberの値をリストの3番目の項目に変更し、左側のすべての項目と比較します。
current_numberは3になります。比較する必要があります:
- 3は9より大きいですか?いいえ、9の前に3が挿入されます。
- 3は4より大きいですか?いいえ、3は4の前に移動されます。
リストは次のようになります:
3 | 4 | 9 | 5 |
このプロセスは、リストがソートされるまで繰り返されます。リストには4つの値しか含まれていないため、実行する比較のセットはあと1つだけです。次の反復では、5がcurrent_numberになります。
- 5は9より大きいですか?いいえ、5は9の前に移動します。
5はソートされたリストの最後の数値であるため、これ以上の比較は行われません。この反復の後、配列はソートされました:
3 | 4 | 5 | 9 |
とても簡単です!挿入ソートでは、常にリストの左側にソートされた値を保持していました。並べ替えられていない値が右側に表示されました。
リスト内の反復ごとに、current_numberを並べ替えられていないすべてのアイテムと比較しました。このプロセスは、リストが並べ替えられるまで繰り返されました。
Pythonで挿入ソートを作成する方法
紙の挿入ソートを順調に進んでいます。それでは、要点を理解し、Pythonで挿入ソートを実装しましょう。
ソート関数を書く
まず、並べ替えを実行するPython関数を作成します。
def sortNumbers(toSort): for number in range(1, len(toSort)): current_number = toSort[number] i = number - 1 while i >= 0 and current_number < toSort[i]: toSort[i + 1] = toSort[i] i -= 1 toSort[i + 1] = current_number
これがどのように機能するかを見ていきましょう。 sortNumbers 関数は、リスト内のすべての数値をループするPythonforループを作成します。次に、リストの最初の要素をPython変数 current_number に割り当てて、並べ替えられた値として設定します。 。
ソートされていないPythonリストのすべてのアイテム(current_numberの後のすべてのアイテム)を繰り返し処理します。次に、current_numberを左側の各数値と比較します。この後、 current_numberの値を設定します リスト内のその後の要素と同じになるようにします。
メインプログラムを作成する
挿入ソートを実行するメインプログラムを作成する必要があります:
numbers = [9, 4, 3, 5] sortNumbers(numbers) print(numbers)
コードは次のようになります:
[3, 4, 5, 9]
リストは昇順で並べ替えられています。ここまでおめでとうございます。
Python挿入ソート:降順
挿入ソートでは、数値を降順でソートできます。これを実現するには、whileループの「より小さい」(>)記号を反転し、それをより大きい記号にする必要があります。
while i> =0 and current_number> toSort [i]:
上記の例で置き換えられたこのコード行は、リスト内のアイテムを逆の順序で並べ替えます。
挿入ソートはいつ使用する必要がありますか?
挿入ソートは、リスト内のデータがほぼソートされている場合、または小さなリストをソートしている場合に最適です。大きなリストを並べ替えるために使用できる、より効率的なアルゴリズムがあります。たとえば、マージソートやクイックソートの方が高速です。
挿入ソートはバブルソートよりも高速です。
とにかく、挿入ソートは知っておくと便利です。挿入ソートを実装する方法を知っていると、使用できる別のタイプのソートが得られます。
挿入ソートは、他のいくつかのソートアルゴリズムよりも複雑ではありません。挿入ソートの書き方を学んだら、マージソートのようなより複雑なソートについて学ぶことに近づきます。
Python挿入ソート:複雑さの分析
すべてのアルゴリズムと同様に、最良、最悪、および平均的な複雑さを考慮することが重要です。これにより、アルゴリズムがその仕事を行うのにどれほど効果的であるかについての洞察が得られます。この場合は、リストを並べ替えます。
最悪の場合と平均的な複雑さはO(n2)です。これは、リストで並べ替える値を追加すると、アルゴリズムの成長が指数関数的に遅くなることを意味します。
最良のシナリオはO(n)です。これは、ソートされたリストでアルゴリズムを実行したときに発生します。アルゴリズムは、アイテムがソートされていることを確認してから、実行を停止します。
Big O表記に関する2部構成のシリーズで、アルゴリズムの複雑さをどのように表現するかについて詳しく知ることができます。
結論
挿入ソートは、カードゲームで手札のカードのリストをソートするようなものです。並べ替えられたアイテムのリストと並べ替えるアイテムのリストの2つのリストを保持します。次に、並べ替えられていないアイテムのリストを調べて、すべて並べ替えられるまで位置を入れ替えます。
より多くのPythonプログラミング言語リソースをお探しですか? Pythonの完全な学習方法ガイドをご覧ください。 Pythonを学ぶためのヒントや、オンラインコース、書籍、その他のリソースのリストをご覧いただけます。
-
再帰的挿入ソートのためのPythonプログラム
この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 −配列が与えられたので、再帰的挿入ソートの概念を使用して配列をソートする必要があります。 挿入ソートは、指定された順序で要素を手動で挿入する並列配列の作成で機能します。 次に、以下の実装のソリューションを見てみましょう- 例 # recursive way def insertionSortRecursive(arr,n): # base case if n<=1: return
-
Pythonプログラムでの挿入ソート
この記事では、Python3.xでの挿入ソートの実装について学習します。またはそれ以前。 アルゴリズム ソートされた配列を各反復で拡張することにより、入力要素を反復します。 現在の要素を、並べ替えられた配列で使用可能な最大値と比較します。 現在の要素の方が大きい場合は、その要素をそのままにして次の要素に移動します。それ以外の場合は、並べ替えられた配列内で正しい位置を見つけて、配列内のその位置に移動します。 これは、並べ替えられた配列内の現在の要素よりも大きいすべての要素を右にシフトすることで実現されます。 それでは、アルゴリズムの視覚的表現を見てみましょう