/**
* @author zzw
* @create 2021/04/11-15:11
*/
//将第一个数据默认为有序的,将下一个数据插入到正确位置也变成有序的,在得到第三个数据插入到正确位置前面也变成有序的,重复
public class test {
public static void main(String[] args) {
int[] arrays={5,6,3,2,8,9,1,7,10,22,3,6,1};
for (int i = 0;i < arrays.length;i++){
//存放当前要比较的值
int temp= arrays[i];
int j=i-1;
//当前数据i的上一个数据的下标为:j=i-1.j为上一个数据的下标
//如果上一个数据(已排序的数据)比当前数据大,那么就要将当前数据插入到已排序的数据中
for(;j>=0 && arrays[j]>temp; j--){
//进入循环说明上一个数据(已排序的数据)比当前数据大
//将上一个数据往后退⼀个位置
//第一次进入是3和6比较:arrays[2]=arrays[1] 也就是把原本3的位置放了个6,然后j-- j=0,此时arrays[0]>arrays[2],任进入循环
//arrays[1]=arrays[0],把原本6的位置放了个5,j--,不满足进入循环的条件,退出循环,此时j+1就是要比较的数字3的合适位置,把3放到了arryas[0]
arrays[j + 1] = arrays[j];
//走到这会执行j--,让当前数据和上一个数据的上一个数据进行比较
}
//1.跳出for循环说明找到了合适的位置了,插入到了比上一个大并且比后一个小的位置
//2.未进入循环则直接放最后面
System.out.println("当前数据:"+temp+"要放入的下标为:"+(j+1));
arrays[j + 1] = temp; //把当前要比较的值插入到已排序的数据中变成心得已排序的数据
}
//遍历数组
for (int array : arrays) {
System.out.print(array+" ");
}
}
}
03--插入排序
最新推荐文章于 2023-06-18 20:43:23 发布