图解如下:
代码如下:
public static void insertSort(int array[]){
// //第一轮:结果应该是34,101,119,1
// //做法:取第一个数,放到前面的有序数组里面去插入到相对应的位置
// int target = array[1];//本次要插进去的数
// int targetIndex = 1-1;//array[1]前面的各个数
//
// //targetIndex >= 0:要一直比较到最前面的一个元素
// // target < array[targetIndex]:如果小就要交换顺序,一直到找到合适的位置a
// while (targetIndex >= 0 && target < array[targetIndex]){
// array[targetIndex+1] = array[targetIndex];
// targetIndex--;
// }
// array[targetIndex+1] = target;
//
// System.out.println("第一轮过后的结果是:" + Arrays.toString(array));
//
// //第二轮:结果应该是34,101,119,1
//
// target = array[2];//本次要插进去的数
// targetIndex = 2-1;//array[1]前面的各个数
//
// //targetIndex >= 0:要一直比较到最前面的一个元素
// // target < array[targetIndex]:如果小就要交换顺序,一直到找到合适的位置a
// while (targetIndex >= 0 && target < array[targetIndex]){
// array[targetIndex+1] = array[targetIndex];
// targetIndex--;
// }
// array[targetIndex+1] = target;
//
// System.out.println("第二轮过后的结果是:" + Arrays.toString(array));
//最终整合成2个循环
for (int i = 1; i < array.length; i++) {
int target = array[i];
int targetIndex = i - 1;
while (targetIndex >= 0 && target < array[targetIndex]){
array[targetIndex+1] = array[targetIndex];
targetIndex--;
}
array[targetIndex+1] = target;
System.out.println("第" + i + "轮过后的结果是:" + Arrays.toString(array));
}
}