用插入排序的方法输入大小为100000,并创建998组随机整数,数据范围在0到1000000之间,并记录998组整数的运行时间,用Java代码书写
时间: 2024-10-23 09:03:40 浏览: 34
为了实现这个需求,我们可以使用Java的`System.currentTimeMillis()`方法来获取当前时间点,然后在每次插入排序之前和之后记录时间,以此计算运行时间。这里是一个简单的示例,展示了如何进行这样的操作:
```java
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
public class TimingInsertionSort {
public static void main(String[] args) {
int size = 100000;
List<List<Integer>> datasets = new ArrayList<>();
Random random = new Random();
// 创建998组随机整数
for (int i = 0; i < 998; i++) {
List<Integer> dataset = new ArrayList<>();
for (int j = 0; j < size; j++) {
dataset.add(random.nextInt(1000001)); // 数据范围在0到1000000之间
}
datasets.add(dataset);
long startTime = System.currentTimeMillis(); // 记录开始时间
insertionSort(dataset);
long endTime = System.currentTimeMillis(); // 记录结束时间
// 计算并打印运行时间
long elapsedTime = endTime - startTime;
System.out.printf("第%d组数据的插入排序耗时: %d毫秒%n", i+1, elapsedTime);
}
}
// 插入排序函数
public static void insertionSort(List<Integer> arr) {
for (int i = 1; i < arr.size(); i++) {
int key = arr.get(i);
int j = i - 1;
while (j >= 0 && arr.get(j) > key) {
arr.set(j + 1, arr.get(j));
j--;
}
arr.set(j + 1, key);
}
}
}
```
在这个代码中,我们创建了998个列表,每个列表都包含了100000个随机整数。对于每组数据,我们都会先记录开始时间,然后进行插入排序,再记录结束时间,最后计算并打印出该组数据的排序时间。
请注意,由于这涉及到大量的随机生成和排序操作,实际运行时可能会因计算机性能、JVM缓存等因素影响结果。实际测试时最好在一个较稳定的环境下进行。
阅读全文