package day10;
public class insertsort {
// 插入排序
public static void main(String[] args) {
int[] arr = {12, -1, 23, -21};
insertSotrmethod(arr);
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + " ");
}
}
public static void insertSotrmethod(int[] arr) {
for (int i = 1; i < arr.length; i++) {
//定义待插入的数
int insertvalue = arr[i];
int insertindex = i - 1; //arr1的前面数的下标
// 给insertvalue找到插入的位置
while (insertindex >= 0 && insertvalue < arr[insertindex]) { //insertindex>=0保证不越界
//insertvalue<arr[insertindex说明待插入数还没有找到适当的位置
// 就需要将arr[insertindex]的值后移
arr[insertindex + 1] = arr[insertindex]; //大的数后移,给小的数留出位置
insertindex--;
}
// 当推出while循环,插入的位置insertindex+1找到。 退出条件就是插入的value>一个数
arr[insertindex + 1] = insertvalue; //将小的数插入到前面的位置
}
}
}
//思路:就是有两个数组(本质上还是一个数组在操作,就是通过将大的数后移然后将比它小的数插入到他的位置)
// 初始插入第二个数,如果他比第一个数小(whlie循环),就交换位置 ,
// 以此类推后面的数会和前面的数一个个(insertindex--)比较(insertvalue < arr[insertindex])
// 如果小于他就退出循环,说明找到了插入的位置
//执行 arr[insertindex + 1] = insertvalue;
07-22
1340
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)