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公里,那么我将能够从结果中学到一些有用的东西。调试程序时会减慢速度,因此它将返回更大的值。否则,它似乎在不到一毫秒的时间内执行。