插入排序
首先模拟一个场景便于理解:
有5个人需要按从小到大的身高依次排序。首先,第二个人与他前面的那个人比较,如果他比前面的那个人低,那么两人互换位置,否则不换,这两个人就排好了序。然后第三个人与第二个人比较身高,如果三号同学比二号同学低,那么三号与二号换位置,然后三号在与一号比,低的向前站,否则(第三个人比第二个人高),位置不变,继续排第四个人,这时,前三个人的顺序就排好了,接下来一次按照这个方法就可以排完序列了,这就是插入排序。
过程演示
第一轮:
首先让i和j都指向数组的第二个数字:7;然后j向前遍历,j指向66;7<66,换位置
第二轮:
第一次:
i后移一位,j指向i,然后j依次向前遍历,4<66,换位
第二次:j前移,4<7,换位
第三轮:依次重复步骤就可完成排序。
代码实现
//代码包含展示过程
import java.util.*;
public class ISort{
public static void main(String[] args){
int[] arrays = {66,7,4,88,99,12};
for(int i = 1; i < arrays.length; i++){
for(int j = i; j > 0; j--){
if(arrays[j] < arrays[j-1]){
int temp = arrays[j];
arrays[j] = arrays[j-1];
arrays[j-1] = temp;
}else{
break;
}
System.out.println("Di"+j+"Ci:"+Arrays.toString(arrays));
}
System.out.println("Di"+i+"Lun:"+Arrays.toString(arrays));
}
}
}
执行结果: