如何在不提供非常大的数组作为输入的情况下实现它?我正在测量不同算法的运行时间,对于 20 个元素的数组,我得到非常(相同)相似的值。我尝试将总时间除以 1000000000 来清除E
然后使用了 16 个镜像,我复制了输入数组并为镜像再次执行它。但堆排序和快速排序仍然是一样的。有什么想法不需要写多余的行吗?
示例输出:
Random array:
MergeSort:
Total time 14.333066343496
QuickSort:
Total time 14.3330663435256
HeapSort:
Total time 14.3330663435256
如果您需要代码片段,请通知我。
对于您的直接问题,请使用System.nanoTime() http://docs.oracle.com/javase/8/docs/api/java/lang/System.html#nanoTime--以获得更精细的时间戳。
对于如何获得更好的基准的根本问题,您应该在更大的数据集上重复运行基准。即使使用更精确的时钟,执行大约 14 毫秒的基准测试也会非常嘈杂。也可以看看如何用 Java 编写正确的微基准测试? https://stackoverflow.com/q/504103/113632
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)