java归并排序计时
时间: 2024-10-26 09:01:09 浏览: 15
Java中的归并排序是一种稳定的排序算法,它采用分治法的思想,将数组分为两半,对每一半分别进行排序,然后合并两个已排序的部分。为了计时这个过程,通常会使用`System.currentTimeMillis()`函数获取当前时间戳,然后在开始和结束排序操作前后各记录一次,计算它们之间的差值即为排序所花费的时间。
以下是一个简单的Java代码示例,展示了如何使用`System.nanoTime()`替代`currentTimeMillis()`进行高精度计时:
```java
import java.util.Arrays;
import java.time.Instant;
public class MergeSortTimer {
private static final long NANOSECONDS_PER_MILLISECOND = 1000 * 1000;
public static void main(String[] args) {
int[] arr = ...; // 初始化一个待排序的整数数组
Instant start = Instant.now();
mergeSort(arr, 0, arr.length - 1);
Instant end = Instant.now();
long elapsedTime = (end.toEpochMilli() - start.toEpochMilli()) * NANOSECONDS_PER_MILLISECOND;
System.out.printf("Merge sort took %.6f nanoseconds\n", elapsedTime);
}
private static void mergeSort(int[] arr, int left, int right) {
if (left < right) {
int mid = (left + right) / 2;
mergeSort(arr, left, mid);
mergeSort(arr, mid + 1, right);
merge(arr, left, mid, right);
}
}
private static void merge(int[] arr, int left, int mid, int right) {
// 实现归并操作...
}
}
```
在这个例子中,`mergeSort`是递归的主要部分,而`merge`负责合并两个有序区间。记得在实际项目中添加适当的合并函数实现。
阅读全文