ブリーフ
説明挿入ソートアルゴリズム(挿入ソートは)簡単なソートアルゴリズムです。これは、ソートされていないデータのために、後ろから前にソートされた順序でスキャンを順序付けられたシーケンスを構築することにより動作し、対応する挿入位置を見つけます。挿入ソートの実現では、ソート一般に、したがってプロセスからの順方向走査で(すなわち、唯一の余分なスペースをO(1)のようなものを使用する必要がある)インプレース用い、繰り返し並べ替え要素の必要性は徐々に後方に位置を移動します、最新の素子を提供する空間に挿入します。
マップのプレゼンテーションを移動します
上記の内容ことを容易に理解することができ、図に示して以下に移動参照。
(基準から図の可動におけるアルゴリズムは、下で詳述を参照してください)
コードの実装
1 / * 2 *挿入ソート 。3 * @paramのアレイ 4。 * @return 5。 * / 6。 パブリック 静的 INT []挿入ソート(INT []配列){ 7。 int型のLEN; 8 // アレイベースケースを直接戻すことができる 9 IF(配列== NULL。||(= LENことArray.lengthと)== == 0 || LEN 1 {) 10 リターンアレイ; 11 } 12が INT 現在、 13である ため(INT I = 0; I <LEN - 1。 I ++){ 14 // 第二の数から出発し、ソートのデフォルト数 15 現在のアレイは= [I + 1。]; 16 // 前下添字番号 17。 INT preIdx = I; 18である 19。 // 現在の取得します前回の比較のシーケンス番号の前に一つずつ、ソート 20 //を現在のデータは、比較より大きい場合、プットの数は一歩後退 21は 、一方(preIdx> = 0 &&現在の< {配列[preIdx]) 22が アレイ[preIdx + 1] = 配列[preIdx]; 23である preIdx-- ; 24 } 25 // 説明の場所を見つけるために、whileループ 26は、 配列[。preIdx + 1] = 現在; 27 } 28 リターンアレイ; 29 }
アルゴリズム分析
最良の場合:T(N)= O(N) 最悪の場合:(N-T(N)= O 2) 平均:T(N)= O(N 2)
参考資料
1 HTTPS://www.cnblogs.com/guoyaohua/p/8600214.html