插入排序
插入排序
插入排序属于内部排序方法,是对于欲排序的元素以插入的方式找寻该元素的适当位置,以达到排序的目的。
基本思想
把n个待排序的元素看成为一个有序表和一个无序表,开始时有序表中只包含一个元素,无序表中包含n-1个元素,排序过程中每次从无序表中取出第一个元素,把它的排序码依次与有序表元素的排序码进行比较,将它插入到有序表中的适当位置,使之成为新的有序表。
也就是将需要排序的数据分成两个序列,原序列和新序列,拿着原序列中的数据,与新序列中的数据依次进行比较,然后放在合适的位置上。
图解思路图

代码
public class InsertSortPro {
public static void main(String[] args) {
int[] arr = {101, 34, 111, 4};
insertSort(arr);
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
}
public static void insertSort(int[] arr) {
for (int i = 1; i < arr.length; i++) {
// 定义待插入的数
int insertVal = arr[i];
// 待插入数的索引
int insertIndex = i-1; //1-1
//找到insertval 找到插入的位置
// 说明
//1。insertIndex>=0 保证给insertval找插入位置,不越界
//2。insertVal<arr[insertIndex] 待插入的数据,还没有找到要插入的位置
//3。就需要将arr[indexIndex]后移
//4。
while (insertIndex >= 0 && insertVal < arr[insertIndex]) {// 保证
arr[insertIndex + 1] = arr[insertIndex];
insertIndex--;
}
// 当退出while循环后,insertIndex需要++
arr[insertIndex + 1] = insertVal;
}
}
}
本文来自博客园,作者:King-DA,转载请注明原文链接:https://www.cnblogs.com/qingmuchuanqi48/articles/17453217.html

浙公网安备 33010602011771号