データを先頭から部分的に整列して、もし走査していった後ろの要素の方が小さかった場合には整列済みの要素の適切な位置に挿入することでソートする方法。
最悪比較回数 |
n(n-1)/2 |
最小比較回数 |
N-1 |
平均計算量 |
O(N^2) |
最悪計算量 |
O(N^2) |
の場合には
の1,3を交換。次に3,4を比較するけれど交換不要のためしない。
次に4と2を比較するが、2の方が小さいので整列済み
に挿入し、
とするような感じで繰り返すことでソートする。
javaで書いてみた
public class Insertion {
public static void main(String[] args) {
int[] array = {3,2,4,5,6,1};
Insertion insertion = new Insertion();
insertion.insertion(array);
for(int i = 0; i < array.length; i++) {
System.out.println(array[i]);
}
}
public void insertion(int[] array) {
int temp;
for(int i = 1; i < array.length; i++) {
/*jはiの値が大きくなるまで交換が先に進まない*/
for(int j = i - 1; j >= 0; j--) {
if(array[j] > array[j+1]) {
/*以下3行は交換*/
temp = array[j];
array[j] = array[j+1];
array[j+1] = temp;
}
}
}
}
}
最終更新:2011年04月08日 20:09