[英]How to implement a benchmark for a java mergesort program?
我想实现一个基准测试方法 MergeSort 及其性能。 我试图用随机数填充要合并排序的数组,但是当代码运行时,数组会打印相同的随机数 10 次。 为什么是这样?
PS。 我无法发布我编写的整个程序。 Stackoverflow 说它的代码太多了。
public static void main(String[] args)
{
int arraySize = 10;
int[] a = new int[arraySize];
int k = 1000;
int m = 1000;
Random rnd = new Random();
for (int j = 0; j < k; j++)
{
// fill the arraySize array with random numbers
for (int i = 0; i < 10*m; i++)
{
Arrays.fill(a, rnd.nextInt());
}
}
long startTime = System.nanoTime();
// array with predefined numbers and size
//int[] a = { 11, 30, 24, 7, 31, 16, 39, 41 };
int n = a.length;
MergeSort m1 = new MergeSort();
System.out.println("\nBefore sorting array elements are: ");
m1.printArray(a, n);
m1.mergeSort(a, 0, n - 1);
long endTime = System.nanoTime();
long timeElapsed = endTime - startTime;
System.out.println("\n\nExecution time in nanoseconds: " + timeElapsed);
System.out.println("Execution time in milliseconds: " + timeElapsed / 1000000);
System.out.println("\nAfter sorting array elements are:");
m1.printArray(a, n);
}
}
for (int i = 0; i < 10*m; i++){
Arrays.fill(a, rnd.nextInt());
}
这个循环用一个数字填充数组 10*m 次。 这就是为什么整个数组的编号相同的原因。
解决方案:
int arraySize = 10;
int[] a = new int[arraySize];
for (int i = 0; i < arraySize; i++)
a[i] = rnd.nextInt(1000);
System.out.println(Arrays.toString(a));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.