Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 计算合并排序的运行时间_Java_Arrays_Algorithm_Sorting_Mergesort - Fatal编程技术网

Java 计算合并排序的运行时间

Java 计算合并排序的运行时间,java,arrays,algorithm,sorting,mergesort,Java,Arrays,Algorithm,Sorting,Mergesort,当您要计算合并排序的运行时间时,这是正确的,请将开始时间放在调用mergeSort函数之前或调用之后: startTime=System.nanoTime(); mergeSort(temp,0,temp.length - 1); endTime=System.nanoTime(); running-time=(endTime-startTime); 或 哪个是正确的,因为结果不同?第一个是正确的,因为它获取操作之前的时间(合并排序),执行操作,然后获取操作之后

当您要计算合并排序的运行时间时,这是正确的,请将开始时间放在调用mergeSort函数之前或调用之后:

    startTime=System.nanoTime();
    mergeSort(temp,0,temp.length - 1);
    endTime=System.nanoTime();
    running-time=(endTime-startTime);


哪个是正确的,因为结果不同?

第一个是正确的,因为它获取操作之前的时间(合并排序),执行操作,然后获取操作之后的时间,使用这两个时间来计算所花费的时间

第二个是不正确的,因为它执行操作,然后使用时间进行计算,而它计算的时间与运行合并排序算法所用的时间无关


注意:变量
运行时间
无效。考虑将它改为<代码>运行时间< /> >或者在最坏的<>代码>运行时< /COD> .

第一个是正确的,第二个与合并的时间无关,只在开始时和结束时间之间的差异中只考虑在两个调用之间发生的程序动作:<代码>毫微秒()/<代码>。“它只是计算调用
System.nanoTime()所需的时间两次并将其分配给两个变量。“:这不太准确。@实际上是trincot true。我会相应地编辑它。好的,你删除了关于第二个代码的度量值的任何声明。你知道它度量值是什么吗?@tincot我不能假装是JVM专家,但很可能只是两次调用之间的时间(因为CPU可能会在这段时间内从Java进程切换到其他事务)
    mergeSort(temp,0,temp.length - 1);
    startTime=System.nanoTime();
    endTime=System.nanoTime();
    duration=(endTime-startTime);