1 public class InsertSort {
2
3 /**
4 * 直接插入排序
5 */
6 public static void main(String[] args) {
7 int a[] = { 10, 8, 14, 9,17,3,15 };
8 int temp = 0;
9
10
11 //排序我觉得应该知道,运行了多少次,直接插入排序先看前两个数
12 //然后看前三个数,然后前四个数,也就是最后循环走了a.length-1次,
13 //所以循环从i=1开始到i<a.length结束
14 for(int i=1;i<a.length;i++){
15 //j作为数组下标,从0开始
16 //temp临时比较的数,作为当前所选的个数元素的最后一个值
17 //比如第一次循环选了10,8 那么temp=8
18 //第二次循环8,10,14 那么temp=14
19 //第三次8,10,14,9那么temp=9
20 //第三次时候9<14 那么让14向后移位. 9<10那么10向后移位
21 //9>8不执行,此时j已经自减为0了,那么需要将temp=9,
22 //放在第二位也就是j+1位
23 int j=i-1;
24 temp=a[i];
25
26 for (; j >=0&& temp < a[j]; j--) {
27 a[j + 1] = a[j]; // 将大于temp 的值整体后移一个单位
28 }
29
30 a[j + 1] = temp;
31
32
33 }
34
35 for (int i = 0; i < a.length; i++) {
36 System.out.print(a[i]+",");
37 }
38
39 }
40
41 }