Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 排序数组(气泡排序)_Java_Arrays_Sorting - Fatal编程技术网

Java 排序数组(气泡排序)

Java 排序数组(气泡排序),java,arrays,sorting,Java,Arrays,Sorting,我对数组排序有点怀疑,是的,我对编程是新手。以下面的代码为例: public void bubbleSort(int[] array) { boolean swapped = true; int j = 0; int tmp; while (swapped) { swapped = false; j++; for (int i = 0; i < array.length - j; i++) { if (array[i] > array[i +

我对数组排序有点怀疑,是的,我对编程是新手。以下面的代码为例:

public void bubbleSort(int[] array) {
boolean swapped = true;
int j = 0;
int tmp;
while (swapped) {
    swapped = false;
    j++;
    for (int i = 0; i < array.length - j; i++) {
        if (array[i] > array[i + 1]) {
            tmp = array[i];
            array[i] = array[i + 1];
            array[i + 1] = tmp;
            swapped = true;
        }
    }
}
public void bubbleSort(int[]数组){
布尔交换=真;
int j=0;
int tmp;
while(交换){
交换=假;
j++;
对于(int i=0;i数组[i+1]){
tmp=阵列[i];
数组[i]=数组[i+1];
数组[i+1]=tmp;
交换=真;
}
}
}
在上面的代码中,为什么我们必须使用
j++
i<(array.length-j)
作为测试表达式?我们本可以使用
i<(array.length)
作为测试表达式,而忽略变量
j
。有什么答案吗?

“为什么我们必须使用j++和i<(array.length-j)作为测试表达式?”

背后的原因是,在任何时候,元素
array[array.length-j]
array[array.length-1]
都已排序


示例:假设您有长度为
n
的数组

因此,在第一次迭代之后,最大的元素将被放置在
数组[n-1]

因为最大的元素在下一次迭代中已经被排序,所以我们只对长度
n-1
的数组进行排序

在第二次迭代之后,第二大元素将被放置在
数组[n-2]

因此,由于第一大和第二大元素已经在下一次迭代中进行了排序,我们将只对长度为
n-2
的数组进行排序,依此类推

算法的运行时间将为


正如你所说,我们本可以使用
i<(array.length-1)
,但我们将徒劳无功地完成大量工作。如果我们这样做,运行时间将是(nn),也就是O(nn)。但尽管运行时间仍然是O(n*n)但是很明显,它比第一个小,所以第一个是有效的。

当我不考虑J时,我得到以下错误:java. Lang.ArayIdjxOutOfFunsExcExp:6:是的,读得很好,我相信它会对你有很大帮助。是的,你必须使用<代码> i(数组,长度1)。非常感谢!这真的很有帮助!!你可能想在星号前加一个反斜杠,这样星号就可以显示出来,而不是用斜体。(编辑太小了,我无法修改)。