挿入ソート
急いによって2019年11月10日午前十一時40分40秒
1、の概念
直接挿入ソートは、(直線状の挿入ソート)、n番目の要素を順序付けは順不同と順序付けられた一覧表として見ることができます。スタートリストは一つだけの要素が含ま順序付け、順序付けられていないリストは、n-1の要素が含まれ、ソート処理が順不同リストの最初の要素から取り出し、それが適切なのソートされたリストに挿入されます新しいソートされたリストを作成する位置には、注文プロセスを完了するために、N-1回繰り返すことができます。
2、基本的な考え方
{20,30,40,10,60,50が}番号3は正面上に配置されているされていると、配置し、次の10の順序付けられます。領域内の列の図番号は、注文して乱れの領域に分割されます。(1)最初の無秩序領域の番号を削除し、注文した領域に対応するその位置を見つける:私たちは2つだけ実行する必要があります。(2)データは、データ領域の順番がずれている必要に応じて、領域を注文不規則領域中に挿入されます。
3、完全なコード
1 パブリック クラスInsertSort { 2 / ** パラメータ説明: 3 * A -ソートされた配列であるため 。4 アレイの* N--長さ 5 * / 6 パブリック 静的 ボイド insertSort(INT [] A、INT N-){ 7。 INT I 、J、K; 8 ための(I = 1; I <N-; I ++ ){ 9 // である[I] [0 ... I-1]の間隔の前に適切な場所を見つけるために 10 ため(J = I - 1、。J> = 0; J、 ) 。11 IF(A [j]が< Aは、[I])が 12である BREAK 、 13であります // 適切な場所を見つける 14 IFを(J = I - 1!){ 15 // より[i]がA大データがセットバック 16 のint TEMP = [I]を、 17 のために(私はKが= - 1; K> J; K-- ) 18は、 A [K + 1] = ; A [K] 19。 // 正しい位置にA [i]が 20である A [K + 1] = TEMP; 21である } 22のIS } 23である } 24 25 パブリック 静的 ボイド(文字列[]引数){主 26が INT 、I 27 INT[] A = {20,40,30,10,60,50 }。 28 29 System.out.printf( "の前に並べ替え:" ); 30 のためには、(; I <a.length; iが0 = I ++ ){ 31 System.out.printf( "%のD" 、[I])。 32 } 33 System.out.printf( "\ n" ); 34 35 insertSort(a.length)。 36 37 System.out.printf( "ソート後:" )。 38 のためには、(; I <a.length; iが0 = I ++ ){ 39 System.out.printf( "%のD" 、[I])。 40 } 41 System.out.printf( "\ n"は); 42 } 43 }
1 20 40 30 10 60 50:ソート前 2ソート後:10 20 30 40 50 60