首先要知道插入排序什么
就像抓扑克牌一样,从第二张扑克牌开始,拿新的牌对比前面,找到合适位置插入,直到没有牌
可以看上面的理解
public static void insertSort(int[] array) {
for (int i = 1; i <array.length ; i++) { //因为第一张牌不用排序,所以从第一张开始;
int current = array[i];//保存当前下标的值
int j = i-1; //冲当前下标前一个开始
for (; j >= 0; j--) {
if(array[j]>current) {
//j下标比当前要插入的牌大,j下标的牌向后移动,把j下标的位置空出来
array[j+1]=array[j];
}else{
break; //找到合适位置,跳出循环
}
}
//这里跳出来,如果一开始没进循环,放回原处;
//如果进循环,j的位置要比 当前插入的要小或者等于,这说明j后面是我要放的位置
array[j+1]=current;
}
}
记得看注释理解
不用判空,一个和没有,是进不去循环的,所以不会越界