插入排序
1 插入排序法介绍:
插入式排序属于内部排序法,是对于欲排序的元素以插入的方式找寻该元素的适当位置,以达到排序的目的。
2 插入排序法思想:
插入排序(Insertion Sorting)的基本思想是:把 n 个待排序的元素看成为一个有序表和一个无序表,开始时有 序表中只包含一个元素,无序表中包含有 n-1 个元素,排序过程中每次从无序表中取出第一个元素,把它的排 序码依次与有序表元素的排序码进行比较,将它插入到有序表中的适当位置,使之成为新的有序表。
3 代码实现:
1 //插入排序 2 public static void insertSort(int [] arr){ 3 4 int insertVal = 0; //要插入的数据,是数组中的第二位 5 int inserIndext = 0; 6 //使用for循环把代码简化 7 for (int i = 1; i < arr.length ; i++) { 8 //定义带插入的数 9 insertVal = arr[i]; //要插入的数据,是数组中的第二位 10 inserIndext = i- 1; //即arr【1】 的前面的这个数的下标 11 12 //给 insertVal 找到插入的位置 13 //这句话说明: 14 //1. inserIndext >= -0 保证在给insertVal 找到插入位置,保证不越界 15 //2. insertVal < arr[inserIndext] 说明带插入的数,还没有找打适当的位置。 16 //3.就需要讲 arr[insertIndex] 后移 17 while (inserIndext >= 0 && insertVal < arr[inserIndext]){ 18 //{101,34,119,1} 这里就是讲这个数组变为 {101,101,119,1} 19 //因为在上边以及保存过 34 所以在这里进行了覆盖。 20 arr[inserIndext + 1] = arr[inserIndext]; 21 inserIndext--; 22 } 23 //当退出while循环时,说明插入的位置找打,insertIndex + 1。因为insertIndex是arr[1]的前一个位置的下标 24 //经过上边的 inserIndex的 -- 在这里的 inserIndex已经变为了 - 1。家 1 变为了 0。 25 26 //这里判断是否需要赋值 27 if (inserIndext + 1 != i) { 28 arr[inserIndext + 1] = insertVal; 29 } 30 31 System.out.println("第" + i + "轮插入排序后:"); 32 System.out.println(Arrays.toString(arr)); 33 }

浙公网安备 33010602011771号