一般的なソートアルゴリズム(V):挿入ソート

挿入ソート英語:挿入ソート)は、シンプルで直感的なソートアルゴリズムこれは、構築することで動作し順序付けられたシーケンスをするために、ソートされていないデータソートされた順序前後に見つけることがスキャンに対応する位置にして挿入します挿入ソート実現においては、通常(すなわち、使用するだけで、場所ソートO(1)余分なスペースを注文)従って、から前方スキャン処理、繰り返しに必要ソート要素は徐々に後方に位置を移動します、最新の素子を提供する空間に挿入します。

 

一般的に、挿入ソート配列にインプレースで使用して実装されています。アルゴリズムは次のように説明されています。

  1. 以下からの最初の要素の始まり、と考えることができる要素がソートされています

  2. 削除し、次の要素を並べ替えの要素シーケンス前方スキャンから

  3. 場合要素(ソート)はより大きくなる新要素、意志の要素次の位置へ

  4. ステップ3を繰り返し、それがソートされた要素が見つかるまで以下の要素の新しい位置

  5. 新しい要素は、排出位置に挿入されています

  6. 手順を繰り返し2から5

挿入ソートのコードは次のとおりです。

1      公共 静的 ボイド insertSort(INT [] ARR){
 2          INT I = 1; I <arr.length;私は++ ){
 3。             INTキー=のARR [I];
 4。             int型 J = I - 1。;
 。5              ながら(J > = 0 && ARR [J]> キー){ //現在の要素が新たな要素が要素を後退さよりも大きい場合
 6。                  ARR [Jの+ 1] = ARR [J];
 7                  J、;
 8              }
 。9              ARR [ 1 + J] = キー;
 10          }
 11      }

各要素バックスキャンからの移動、前方スキャンのアルゴリズムはそれを最後のアレイまでの平均時間複雑性がありO(N²) 最良の場合はO(N)(既にソートされています場合)、最悪の場合はO(n²)です。アルゴリズムは要素を交換するための一時的な変数を利用し、空間複雑さはO(1) 。 

 

テストコード:

1      公共 静的 ボイドメイン(文字列[]引数){
 2          INT [] ARR = {1、1、2、0、9、3、12、7、8、3、4、65、22 }。
3  
4          insertSort(ARR)。
5  
6          ためのint型私は:ARR){
 7              System.out.print(i "が" + )。
8          }
 9      }

 

おすすめ

転載: www.cnblogs.com/magic-sea/p/11370241.html