class test{
static int a[]=new int[]{5,2,4,6,1,3};
public static void insertSort(int a[]){
System.out.print("开始 排序结果:");
int length=a.length; //数组长度
int j; //当前值的位置
int i; //指向j前的位置
int key; //当前要进行插入排序的值
for (int k : a) {
System.out.print(k+" ");
}
int m=1;
//从数组的第二个位置开始遍历值
for(j=1;j<length;j++){
key=a[j];
i=j-1;
//a[i]比当前值大时,a[i]后移一位,空出i的位置,好让下一次循环的值后移
while(i>=0 && a[i]>key){
a[i+1]=a[i]; //将a[i]值后移
i--; //i前移
}//跳出循环(找到要插入的中间位置或已遍历到0下标)
System.out.println(" ");
System.out.print("第"+m+"次后移结果:");
for (int k : a) {
System.out.print(k+" ");
}
a[i+1]=key; //将当前值插入
System.out.println(" ");
System.out.print("第"+m+"次排序结果:");
for (int k : a) {
System.out.print(k+" ");
}
m++;
}
System.out.println(" ");
System.out.print("最终结果:");
for (int k : a) {
System.out.print(k+" ");
}
}
public static void main(String[] args) {
insertSort(a);
}
}