图解
代码实现
package com.atguigu.sort;import java.util.Arrays;/*** @创建人 wdl* @创建时间 2021/3/22* @描述*/
public class InsertSort {public static void main(String[] args) {int[] arr={101,34,119,1};insertSort(arr);}//插入排序public static void insertSort(int[] arr){//使用for循环来把代码简化for (int i = 1; i < arr.length; i++) {//定义待插入的数int insertVal=arr[i];int insertIndex=i-1;//即arr[1]的前面这个数的下标//给insertVal找到插入的位置//说明//1.insertIndex>=0保证在给insertVal找插入位置,不越界//2.insertVal<arr[insertIndex] 待插入的数,还没有找到插入位置//3.就需要将arr[insertIndex]后移while (insertIndex>=0&&insertVal<arr[insertIndex]){arr[insertIndex+1]=arr[insertIndex];//arr[insertIndex]insertIndex--;}//当退出while循环时,说明插入的位置找到,insertIndex+1arr[insertIndex+1]=insertVal;System.out.println("第"+i+"轮插入");System.out.println(Arrays.toString(arr));}// //使用逐步推导的方式来讲解,便利理解
// //第1轮{101,34,119,1}=>{34,101,119,1}
//
// //定义待插入的数
// int insertVal=arr[1];
// int insertIndex=1-1;//即arr[1]的前面这个数的下标
//
// //给insertVal找到插入的位置
// //说明
// //1.insertIndex>=0保证在给insertVal找插入位置,不越界
// //2.insertVal<arr[insertIndex] 待插入的数,还没有找到插入位置
// //3.就需要将arr[insertIndex]后移
// while (insertIndex>=0&&insertVal<arr[insertIndex]){
// arr[insertIndex+1]=arr[insertIndex];//arr[insertIndex]
// insertIndex--;
// }
// //当退出while循环时,说明插入的位置找到,insertIndex+1
// arr[insertIndex+1]=insertVal;
// System.out.println("第1轮插入");
// System.out.println(Arrays.toString(arr));
//
//
//
// //第二轮
// //定义待插入的数
// insertVal=arr[2];
// insertIndex=2-1;//即arr[1]的前面这个数的下标
//
// //给insertVal找到插入的位置
// //说明
// //1.insertIndex>=0保证在给insertVal找插入位置,不越界
// //2.insertVal<arr[insertIndex] 待插入的数,还没有找到插入位置
// //3.就需要将arr[insertIndex]后移
// while (insertIndex>=0&&insertVal<arr[insertIndex]){
// arr[insertIndex+1]=arr[insertIndex];//arr[insertIndex]
// insertIndex--;
// }
// //当退出while循环时,说明插入的位置找到,insertIndex+1
// arr[insertIndex+1]=insertVal;
// System.out.println("第2轮插入");
// System.out.println(Arrays.toString(arr));
//
// //定义待插入的数
// insertVal=arr[3];
// insertIndex=3-1;//即arr[1]的前面这个数的下标
//
// //给insertVal找到插入的位置
// //说明
// //1.insertIndex>=0保证在给insertVal找插入位置,不越界
// //2.insertVal<arr[insertIndex] 待插入的数,还没有找到插入位置
// //3.就需要将arr[insertIndex]后移
// while (insertIndex>=0&&insertVal<arr[insertIndex]){
// arr[insertIndex+1]=arr[insertIndex];//arr[insertIndex]
// insertIndex--;
// }
// //当退出while循环时,说明插入的位置找到,insertIndex+1
// arr[insertIndex+1]=insertVal;
// System.out.println("第3轮插入");
// System.out.println(Arrays.toString(arr));
//
//}}