並べ替えアルゴリズムの2つ――並べ替えを挿入する2つの実現思想
2659 ワード
http://blog.csdn.net/morewindows/article/details/6665714 https://zh.wikipedia.org/wiki/%E6%8F%92%E5%85%A5%E6%8E%92%E5%BA%8F
並べ替えを挿入する(英語:Insertion Sort)は簡単で直感的な並べ替えアルゴリズムです.その動作原理は、順序付けされたシーケンスを構築することによって、順序付けされていないデータに対して、順序付けされたシーケンスの中で後方から前へスキャンし、対応する位置を見つけて挿入することである.挿入順序付けは、実装では、一般的に、in-place順序付け(すなわち、O(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までの第二のステップを繰り返す.並べ替えが完了しました Javaコード:
並べ替えを挿入する(英語:Insertion Sort)は簡単で直感的な並べ替えアルゴリズムです.その動作原理は、順序付けされたシーケンスを構築することによって、順序付けされていないデータに対して、順序付けされたシーケンスの中で後方から前へスキャンし、対応する位置を見つけて挿入することである.挿入順序付けは、実装では、一般的に、in-place順序付け(すなわち、O(1)までの追加の空間の順序付けのみを使用することができる)を使用しているので、後から前へスキャンする過程で、順序付けされた要素を逐次後方へ移動させ、最新の要素に挿入空間を提供する必要がある.
配列をa[0...n-1]に設定します.
// j
// arr[j] arr[0]...arr[i - 1]
public static void insertion_sort( int[] arr ) {
for( int i=0; i<arr.length-1; i++ ) {
for( int j=i+1; j>0; j-- ) {
if( arr[j-1] <= arr[j] )
break;
int temp = arr[j];
arr[j] = arr[j-1];
arr[j-1] = temp;
}
}
}
Javaの別のバージョン:// i
// arr[i] arr[0]...arr[i - 1]
public static void insertion_sort(int[] arr)
{
for (int i = 1; i < arr.length; i++ ) {
int temp = arr[i];
for (int j = i - 1; j >= 0 && arr[j] > temp; j-- ) {
arr[j + 1] = arr[j];
arr[j + 1] = temp;
}
}
}