插入排序
package com.sort;
import java.util.Arrays;
/**
* @Author Handsome
* @Date 2022/8/12 15:58
* @Version 1.0
*/
public class 插入排序 {
public static void main(String[] args) {
insertSort(new int[]{2, 35, 520, 11, 88});
// 输出
// 第1趟排序后的数组
// [2, 35, 520, 11, 88]
// 第2趟排序后的数组
// [2, 35, 520, 11, 88]
// 第3趟排序后的数组
// [2, 11, 35, 520, 88]
// 第4趟排序后的数组
// [2, 11, 35, 88, 520]
}
public static void insertSort(int[] arr) {
int insertVal = 0; // 定义待插入的数
int insertIndex = 0; // 即arr[i]的前面这个数的下标
for (int i = 1; i < arr.length; i++) {
insertVal = arr[i];
insertIndex = i - 1;
while (insertIndex >= 0 && insertVal < arr[insertIndex]) {
arr[insertIndex + 1] = arr[insertIndex];
insertIndex--;
}
// 优化 判断是否需要赋值
if (insertIndex + 1 != i) {
// 当退出while循环时,说明插入的位置找到即insertIndex + 1
arr[insertIndex + 1] = insertVal;
}
System.out.println("第" + i + "趟排序后的数组");
System.out.println(Arrays.toString(arr));
}
}
}
我的学习论坛
HandsomeForum:用Java编写的学习论坛,打造我们自己的圈子!(http://huangjunjie.vip:66)