Java 当返回值不同时,为什么我的排序方法返回0?

Java 当返回值不同时,为什么我的排序方法返回0?,java,arrays,methods,return,Java,Arrays,Methods,Return,公共类排序{ public static void main(String[] args) { int[] random = { 8, 32, 26, 1870, 3, 80, 46, 37 }; int[] decreasing = { 1870, 80, 46, 37, 32, 26, 8, 3 }; int[] increasing = { 3, 8, 26, 32, 37, 46, 80, 1870 }; System.out.println(&quo

公共类排序{

public static void main(String[] args) {

    int[] random = { 8, 32, 26, 1870, 3, 80, 46, 37 };
    int[] decreasing = { 1870, 80, 46, 37, 32, 26, 8, 3 };
    int[] increasing = { 3, 8, 26, 32, 37, 46, 80, 1870 };

    System.out.println("|\t\t| random  |decreasing|increasing|");
    System.out.println("|---------------|-----------|-----------|----------|");
    System.out.println("|Bubblesort\t| " + bubbleSort(random) + " ms\t|" + bubbleSort(decreasing) + " ms\t|"
            + bubbleSort(increasing) + " ms\t|");
    }

public static long bubbleSort(int[] arr) {

    long start = System.currentTimeMillis();

    for (int j = 0; j < arr.length - 1; j++) {
        for (int i = 0; i < arr.length - j - 1; i++) {
            if (arr[i + 1] < arr[i]) {
                arr[i + 1] = arr[i] + arr[i + 1];
                arr[i] = arr[i + 1] - arr[i];
                arr[i + 1] = arr[i + 1] - arr[i];
            }
        }
    }

    return System.currentTimeMillis() - start;

}
publicstaticvoidmain(字符串[]args){
int[]random={8,32,26,1870,3,80,46,37};
int[]递减={1870,80,46,37,32,26,8,3};
int[]递增={3,8,26,32,37,46,80,1870};
System.out.println(“|\t\t |随机|减少|增加|”);
System.out.println(“|-------------------------------------------------”号);
System.out.println(“|Bubblesort\t|”+Bubblesort(随机)+“ms\t|”+Bubblesort(递减)+“ms\t|”
+bubbleSort(递增)+“ms\t |”);
}
公共静态长冒泡端口(int[]arr){
长启动=System.currentTimeMillis();
对于(int j=0;j
}

输出:


我编写了一个程序,它执行bubbleSort方法并返回它所用的时间(毫秒)。我想打印返回值,但对于所有数组,我得到0。当我调试程序时,我可以看到它返回了一些其他数字。但说到打印,它的打印速度是0。我不明白这个问题。有人能帮我吗?

试着用
System.nanoTime()
代替
System.currentTimeMillis()
。nanoTime函数使用纳秒作为单位,而不是毫秒,这使得程序运行时不太可能没有经过时间

但是,实际上您需要测试更长的数组--尝试数千或上万个元素。通过对如此短的数组进行排序,您不会得到实际有用的计时数据。您可能希望编写生成包含许多随机元素的数组的代码,然后使用内置方法,例如将随机数据排序到递减或递增的测试列表中


如果我想举行一场比赛来确定谁跑得最快,并且我设定了一个一厘米(或一英寸)长的路线,我能从结果中确定任何有用的东西吗?可能不会。但是,如果航程是100米、400米或5公里,那么我将能够从结果中学到一些有用的东西。

调试程序时会减慢速度,因此它将返回更大的值。否则,它似乎在不到一毫秒的时间内执行。