直接挿入ソートアルゴリズムJava実装


  • 基本思想
    ソートされるレコードを1つずつ、すべての挿入が完了するまで、前に並べられたサブシーケンスの適切な位置にキーワードサイズで挿入します.
    配列をa[0...n-1]とする
  • の初期時、a[0]は1つの秩序領域を形成し、無秩序領域はa[1...n−1]であった.i=1
  • a[i]を現在の秩序領域a[0...i-1]に組み入れるa[0...i]を形成する秩序区間
  • i++は、i=n−1まで第2のステップを繰り返す.ソート完了
  • アルゴリズム実装
  •     public void sort(int[] array) {        int i, j, k;    
            for (i = 1; i = 0; j--) { //    0 i-1 i   ,    j
                    if (array[j]  j; k--) { //   j i-1    
                        array[k + 1] = array[k];
                    }    
                    array[k + 1] = tmp; //  i  j
                }
            }
        }

    このようなコードは比較的長いので,これを書き換えることができる.検索とデータを後方に移動してマージします.
  • 改良
  •     public void sort(int[] array) {        for (int i = 1; i  i-1         
                    int tmp = array[i]; //   i  
                    int j;    
                    for (j = i - 1; j >= 0 && array[j] > tmp; j--) { //  0 i-1,  0 i-1   i  ,    
                        array[j + 1] = array[j];
                    }    
                    array[j + 1] = tmp; //  i          
                }
            }
        }