繁体   English   中英

如何为 java 合并排序程序实施基准测试?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM