代码:
package com.wangyq.datastructrue.sort;
import java.util.Arrays;
public class Insertion {
public static void main(String[] args) {
int[] ints = {5, 34, 7, 834, 75, 23, 345, 78908, 2, 3};
System.out.println("排序前:" + Arrays.toString(ints));
insertion(ints);
System.out.println("排序后:" + Arrays.toString(ints));
}
private static void insertion(int[] ints) {
//存储当前需要插入的值
int temp;
int corner;//记录当前最小值的角标
for (int i = 1; i < ints.length; i++) {
temp = ints[i];
for (corner = i; corner > 0; corner--) {
//如果大于插入值,后移
if (ints[corner - 1] > temp) {
ints[corner] = ints[corner - 1];
} else {
break;
}
}
//获取插入角标,将值插入
ints[corner] = temp;
System.out.println("第" + (i + 1) + "次排序:" + Arrays.toString(ints));
}
}
}
执行结果:
排序前:[5, 34, 7, 834, 75, 23, 345, 78908, 2, 3]
第2次排序:[5, 34, 7, 834, 75, 23, 345, 78908, 2, 3]
第3次排序:[5, 7, 34, 834, 75, 23, 345, 78908, 2, 3]
第4次排序:[5, 7, 34, 834, 75, 23, 345, 78908, 2, 3]
第5次排序:[5, 7, 34, 75, 834, 23, 345, 78908, 2, 3]
第6次排序:[5, 7, 23, 34, 75, 834, 345, 78908, 2, 3]
第7次排序:[5, 7, 23, 34, 75, 345, 834, 78908, 2, 3]
第8次排序:[5, 7, 23, 34, 75, 345, 834, 78908, 2, 3]
第9次排序:[2, 5, 7, 23, 34, 75, 345, 834, 78908, 3]
第10次排序:[2, 3, 5, 7, 23, 34, 75, 345, 834, 78908]
排序后:[2, 3, 5, 7, 23, 34, 75, 345, 834, 78908]