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 }