java - 我在 Java 中得到不同的冒泡排序运行时间

标签 java bubble-sort

我创建了一个新的冒泡排序项目,我想知道它需要多少时间。因此,我添加了一个 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/

相关文章:

java - 如何替换字符串中第二次出现的字符? ( java )

java - 解析后完成对象

java - Android webview读取cookies

Linux Shell-Script 代码没有按预期执行

c - 如何将使用数组的冒泡排序转换为双向链表?

c++ - 双重选择对数组进行排序 - honeSTLy stumped

java - 如何输出冒泡排序中执行的传递次数直到数组排序?

java - Xstream:如何使用数组反序列化 Xml

java - Lotus Domino Java API session 创建和取消

c++ - 使用基于此标志的条件语句是否比添加更多代码行更有效?