如何在不给出非常大的数组作为输入的情况下实现它?我正在测量不同算法的运行时间,对于20个元素的数组,我得到非常(相同)的相似值。我尝试将总时间除以1000000000以清除E
,然后使用16个镜像,我复制输入数组并再次为镜像执行它。但是Heap和Quick排序仍然是一样的。任何想法,而无需写冗余线?
示例输出:
Random array:
MergeSort:
Total time 14.333066343496
QuickSort:
Total time 14.3330663435256
HeapSort:
Total time 14.3330663435256
如果您需要代码段,请通知我。
答案 0 :(得分:2)
要直接提问,请使用System.nanoTime()
获取更精细的时间戳。
对于如何获得更好的基准测试的基本问题,您应该重复运行基准测试并在更大的数据集上运行。即使使用更精确的时钟,执行大约需要14毫秒的基准测试也会非常嘈杂。另请参阅How do I write a correct micro-benchmark in Java?
答案 1 :(得分:1)