到目前为止,我已经完成了...... 第一个类包含插入排序算法
public class Sorting {
public static void insertionSort(int[] r)
{
for ( int i = 1; i < r.length; i = i+1 )
{int v = r[i];
int j = i;
while ( j != 0 && r[j-1] > v )
{r[j] = r[j-1];
j = j-1;
}
r[j] = v;
}
}
}
这是第二节......
import java.util.*;
public class ExecutionTime{
public static void main(String[] args){
int size=30000;
int[] r = new int[size];
int number=1;
for(int i=1;i<size;i++){
r[i]=number;
number++;}
for(int i=1;i<size;i++){
System.out.println(r[i]);}
Sorting.insertionSort(r);
long result;
long startTime = System.nanoTime();
long endTime = System.nanoTime();
result = endTime-startTime;
System.out.println("Execution time is " + result + " nanoseconds");
}
}
答案 0 :(得分:1)
你实际上并没有对排序进行计时:
Sorting.insertionSort(r);
long result;
long startTime = System.nanoTime();
long endTime = System.nanoTime();
result = endTime-startTime;
注意你先排序,然后计算时间差,好吧,没有做任何事情(startTime
和endTime
之间没有分配代码)。相反,这样做:
long result;
long startTime = System.nanoTime();
Sorting.insertionSort(r);
long endTime = System.nanoTime();
result = endTime-startTime;
这样,endTime - startTime
跨越了排序操作。
答案 1 :(得分:0)
根据Precision vs. accuracy of System.nanoTime(),无法保证它返回的值的频率会发生变化。只是因为在你调用函数两次之间已经过了4000纳秒并不意味着值已经改变了。
工作中的精确度与准确度。