1.代码:
package com.example.lib5.sort;
import java.text.SimpleDateFormat;
import java.util.Date;
public class InsertSort {
public static void main(String[] args) {
// int[] arr = {101, 34, 119, 1};
int[] arr=new int[80000];
for (int i = 0; i < arr.length; i++) {
arr[i]= (int) (Math.random()*80000);
}
Date date = new Date();
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String time1 = simpleDateFormat.format(date);
System.out.println("排序前时间:"+time1);
insertSort(arr);
Date date2 = new Date();
String time2 = simpleDateFormat.format(date2);
System.out.println("排序后时间:"+time2);
}
private static void insertSort(int[] arr) {
/**
* 第一轮排序
* 101,34,119,1 ---->34,101,119,1
*/
//获取第一个要插入的值
for (int i = 1; i < arr.length; i++) {
int insertVal = arr[i];
//获取第一个插入的值得前一个索引
int insertIndex = i - 1;
//while循环,前一个>=0且将第一个插入的值与前面的数据进行比较,小于就交换位置
while (insertIndex >= 0 && insertVal < arr[insertIndex]) {
arr[insertIndex+1] = arr[insertIndex];
insertIndex--;
}
arr[insertIndex + 1] = insertVal;
}
}
}
2.解释:(下面都是同一个数组)


第一轮变成第二轮的具体变法(下面是同一个数组):

变化过程:

该博客展示了如何使用Java实现插入排序算法,并通过生成一个80000元素的随机数组进行性能测试。博主记录了排序前后的具体时间,以分析算法效率。插入排序在第一轮中将无序数组部分转化为有序,通过不断地比较和交换元素位置来完成排序。
2967

被折叠的 条评论
为什么被折叠?



