我正在为Java类简介编写一个气泡代码程序,这是一个非常简单的任务。我只是好奇我的代码是否正确。问题是,我的代码可以运行,但是它与我看到的其他人发布的常规解决方案不同。我不确定我是否刚刚使用其他排序方法,或者是否编写了其他版本的冒泡排序。
下面是我编写的代码:
import java.util.Arrays;
import java.util.Random;
public class BubbleSort
{
public static void main(String[] args)
{
Random ran = new Random();
int[] list = new int[10];
for(int i = 0; i < list.length; i++)
list[i] = ran.nextInt(50);
System.out.println(Arrays.toString(list));
System.out.println(Arrays.toString(bubbleSort(list)));
}
public static int[] bubbleSort(int[] list)
{
int temp;
for(int i = 0; i < list.length; i++)
{
for(int j = 0; j < list.length - 1; j++)
{
if(list[j] > list[j + 1])
{
temp = list[j];
list[j] = list[j + 1];
list[j + 1] = temp;
}
}
}
return list;
}
}
这很好用。但是我不确定它是否真的是“气泡排序”。
大多数人在编写同一程序时都将其保存在for loop
中
for(int j = 0; j < list.length - 1 - i; i++)
我的问题是,list.length - 1- i
可以正常工作时,list.length - 1
的作用是什么?
我是否不小心进行了其他形式的排序?他们俩都工作,我只是很好奇人们为什么会list.length - 1 - i
答案 0 :(得分:0)
@markspace在评论中给了我正确答案,因此所有人都对他表示赞赏。
为了证明他的回答,我将其发布。我用10,000个整数测试了我的代码,并创建了一个计时器以查看需要多长时间。每当我使用仅对j < list.length - 1
排序10,000个整数的代码时,平均要花费297毫秒。一旦将for循环更改为j < list.length - 1 - i
,它就以196毫秒的速度将循环排序了35%左右。如标记所示,添加- i
只是防止程序重新检查已排序的最后一个元素,从而节省了时间。