public class InsertSort
{
public static void sort(int[] a)
{
int N = a.length;
int count = 0;
for (int i = 1; i < N; i++) // 如果只有一个元素, i < N 就不会成立,for循环就不执行
{
for (int j = i; j > 0; j--)
{
if (a[j] < a[j-1])
{
int temp = 0;
temp = a[j];
a[j] = a[j-1];
a[j-1] = temp;
count++;
}
}
}
for (int i = 0; i < N; i++)
{
System.out.print(a[i] + " ");
}
System.out.println("count = " + count);
}
public static void main(String[] args)
{
int[] a = {6, 2, 5, 3, 1, 4};
InsertSort.sort(a);
}
}
运算过程:
{6, 2, 5, 3, 1, 4}
-----------------------------
i = 1; j = 1;
{2, 6, 5, 3, 1, 4}
-----------------------------
i = 2; j = 2;
{2, 5, 6, 3, 1, 4}
j = 1;
-----------------------------
i = 3; j = 3;
{2, 5, 3, 6, 1, 4}
j = 2;
{2, 3, 5, 6, 1, 4}
j = 1;
-----------------------------
i = 4; j = 4;
{2, 3, 5, 1, 6, 4}
j = 3;
{2, 3, 1, 5, 6, 4}
j = 2;
{2, 1, 3, 5, 6, 4}
j = 1;
------------------------------
i = 5; j = 5;
{1, 2, 3, 5, 4, 6}
j = 4;
{1, 2, 3, 4, 5, 6}
j = 3;
j = 2;
j = 1;