Java随机生成五个数进行归并排序,并计时排序时间
时间: 2024-10-27 19:15:23 浏览: 15
排序算法_随机生成1000个数字_用排序算法排序并比较算法的赋值次数_
5星 · 资源好评率100%
在Java中,你可以通过以下几个步骤来随机生成五个整数,然后对它们进行归并排序并记录排序所需的时间:
1. 首先,导入必要的`java.util.Random`和`java.lang.System.currentTimeMillis()`库,用于生成随机数和测量时间。
```java
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Random;
import java.util.concurrent.TimeUnit;
```
2. 定义一个快速归并排序函数,接受一个列表作为输入。
```java
public static void mergeSort(List<Integer> list) {
if (list.size() <= 1) return;
int mid = list.size() / 2;
List<Integer> left = new ArrayList<>(list.subList(0, mid));
List<Integer> right = new ArrayList<>(list.subList(mid, list.size()));
mergeSort(left);
mergeSort(right);
merge(list, left, right);
}
private static void merge(List<Integer> list, List<Integer> left, List<Integer> right) {
// ...实现归并过程...
}
```
3. 生成随机数并将它们添加到列表中。
```java
Random random = new Random();
List<Integer> numbers = new ArrayList<>();
for (int i = 0; i < 5; i++) {
numbers.add(random.nextInt(100)); // 生成0到99之间的随机数
}
```
4. 记录开始时间,然后进行排序。
```java
long startTime = System.nanoTime();
mergeSort(numbers);
long endTime = System.nanoTime();
```
5. 计算并打印排序所花费的时间。
```java
long elapsedTime = TimeUnit.NANOSECONDS.toMillis(endTime - startTime);
System.out.printf("排序5个随机数用了 %d 毫秒%n", elapsedTime);
```
6. 结合上述代码,完整的例子如下:
```java
public class Main {
public static void main(String[] args) {
List<Integer> numbers = generateRandomNumbers(5);
long startTime = System.nanoTime();
mergeSort(numbers);
long endTime = System.nanoTime();
long elapsedTime = TimeUnit.NANOSECONDS.toMillis(endTime - startTime);
System.out.println("原始数组:" + numbers);
System.out.printf("排序5个随机数用了 %d 毫秒%n", elapsedTime);
}
private static List<Integer> generateRandomNumbers(int size) {
// ...
}
}
```
阅读全文