先以一组数据 的渐变形式来了解一下
这是数据的最初格式
第一次
判断 [0]>[1] 的情况下 这时候元素交换一下
第二次
判断 [1]>[2] 的情况下 这时候元素交换一下
然后在判断
[0]>[1] 的情况下 就再次进行交换如果不是则不进行元素交换
第三次
判断[2]>[3] 情况下进行进行交换 图中明细 [2]<[3] 所以无需交换元素
第四次
判断[3]>[4] 情况下进行进行交换 图中明细 [3]<[4] 所以无需交换元素
第五次
判断[4]>[5] 情况下进行进行元素交换
5.1
5.2
5.3
由于 [4]>[5] 进行了元素交换,现在就得继续往前面一直比较判断
判断 [3]>[4] 如果结果为真就交换元素
由于 [3]>[4] 进行了元素交换,现在就得继续往前面一直比较判断
判断 [2]>[3] 如果结果为真就交换元素

上面的插入排序的基本概念基本规律已经通过一步一步的走一遍,不理解的多理解几遍,如果还是看不懂的话改行吧,你们自己依次类推就能推出结下面代码和规律的推导实现。
判断推理过程
1.[0]>[1] 为真-交换元素
2.[1]>[2] 为真-交换元素
2.1.[0]>[1] 为假-不交换元素
3.[2]>[3] 为假-不交换元素
4.[3]>[4] 为假-不交换元素
5.[4]>[5] 为真-交换元素
5.1.[3]>[4] 为真-交换元素
5.2.[2]>[3] 为真-交换元素
5.3.[1]>[2] 为真-交换元素
5.4.[0]>[1] 为真-交换元素
上面是进行步骤的流程找一下规律就可以写出代码
代码实现
public void px(int[] arr) {
2 int tmp;
3 for(int i = 1; i < arr.length; i++) {
4 // 待插入数据
5 tmp = arr[i];
6 int j;
7 for(j = i - 1; j >= 0; j--) {
8 // 判断是否大于tmp,大于则后移一位
9 if(arr[j] > tmp) {
10 arr[j+1] = arr[j];
11 }else{
12 break;
13 }
14 }
15 arr[j+1] = tmp;
16 System.out.println(i + ":" + Arrays.toString(arr));
17 }
18 }
强调看图理解会快 在自己找一下规律别一上来就看我代码
有问题请发邮件wavesape@126.com 毕竟我这人比较粗心