我创建了一个新的冒泡排序项目,我想知道它需要多少时间。因此,我添加了一个 getTime() 方法,该方法返回纳秒时间。我还创建了一个包含 9 个静态值的数组。当我运行代码时,我得到不同的运行时间(即:通常我得到 3849 ns,但有时为 6432 或 4277 ns)。怎么会这样?
我的代码如下:
long time2;
public void sort(int[] dizi){
long time = System.nanoTime();
for (int i = dizi.length-1; i >0; i--) {
for (int j = 0; j < i; j++) {
if(dizi[j]>dizi[j+1]){
super.swap(dizi, j, j+1);
}
}
}
time2 = System.nanoTime() - time;
}
public long getTime(long time){
return time;
}
main(){
BubbleSort bubbleSort = new BubbleSort();
int[] arr = {4,2,1,8,9,5,3,7,6};
bubbleSort.sort(arr);
Sysout(bubbleSort.getTime(time2));
}
最佳答案
有多种因素可能影响结果。
JVM 可能会开始运行垃圾收集(这绝对不是你的情况),在运行你的程序时,JVM 可能会分配一些内存,并且底层操作系统服务发现它应该交换一些内存,因为它已经耗尽了可用 RAM 等...
没有任何可用的 JVM(适用于 Mac、Windows 和 Linux/Unix)在实时系统上运行,但即使有一天它运行 - 您的 JVM 可能会认为您的程序与某些 JVM Activity 相比具有较低的优先级。
尝试更大的数组,结果会更稳定。
关于java - 我在 Java 中得到不同的冒泡排序运行时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15467692/