在这段代码中,我一次又一次地重复使用排序数组,这就是为什么第二次输出与第一次相比非常低的原因。有人可以帮忙吗?
import java.util.Random;
import java.util.Scanner;
public class UseSorts {
public static int[] makeArray(int x) {
int[] a = new int[x];
for (int i = 0; i < x; i++) {
Random r = new Random(1234);
a[i] = r.nextInt();
}
return a;
}
public static void InsertionSort(int[] x) {
long start = System.nanoTime();
Sorts.InsertionSort(x);
long finish = System.nanoTime();
long total = finish - start;
System.out.println("elapsed time is: " + total);
}
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.print("Enter the number of elements: ");
int number = in.nextInt();
for (int i = 0; i < 10; i++) {
int[] arr = makeArray(number);
InsertionSort(arr);
}
}
}
Enter the number of elements: 100
elapsed time is: 1930646
elapsed time is: 7926
elapsed time is: 7692
elapsed time is: 7590
elapsed time is: 7555
elapsed time is: 7649
elapsed time is: 7560
elapsed time is: 7592
elapsed time is: 7685
elapsed time is: 12281
答案 0 :(得分:0)
除第一次运行外,所有其他运行都是一致的。您可能必须考虑Eclipse开销或用于推断第一次运行时间的工具的开销。我不确定究竟是什么原因,但是,我可以告诉你,你没有重新使用内存,所有其他类变量看起来都很好。如果忽略第一次运行,则所有其他运行都非常一致。