Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/383.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_Quicksort - Fatal编程技术网

Java 在快速排序中,为什么要在数组外开始递减

Java 在快速排序中,为什么要在数组外开始递减,java,quicksort,Java,Quicksort,所以j=array[4]那么我们说当。。。数组[4-]哪个会变成j=数组[3],对吗 这不是同一件事吗:右+1和-j,右和j-行: {4,3,6,1,9} int j = right 期望j的两个值相同。如果你把它改成 while (a[--j] > pivot) { if (j == left) { break; } } 第一个引用的j,a[j-]将比下一个j高一个,j==左 如果要进行更改,您必须将其更改为: while (a[j--] >

所以j=array[4]那么我们说当。。。数组[4-]哪个会变成j=数组[3],对吗

这不是同一件事吗:右+1和-j,右和j-

行:

{4,3,6,1,9}

int j = right 
期望j的两个值相同。如果你把它改成

while (a[--j] > pivot) {
    if (j == left) {
        break;
    }
}
第一个引用的j,a[j-]将比下一个j高一个,j==左

如果要进行更改,您必须将其更改为:

while (a[j--] > pivot) {
    if (j == left) {
        break;
    }
}
我个人的观点是,以前的代码比较干净,因为在一个范围之外启动一个代码是常见的,也是可以理解的。加一个回来是“微妙的”,会让每个人都怀疑它是否正确

做出更改的最清晰方式可能是:

while (a[j--] > pivot) {
    if (j+1 == left) { //adding one back in
        break;
    }
}
<>我会认为这很干净,而且比原来的更好,因为你从int j=右边开始。

线:

{4,3,6,1,9}

int j = right 
期望j的两个值相同。如果你把它改成

while (a[--j] > pivot) {
    if (j == left) {
        break;
    }
}
第一个引用的j,a[j-]将比下一个j高一个,j==左

如果要进行更改,您必须将其更改为:

while (a[j--] > pivot) {
    if (j == left) {
        break;
    }
}
我个人的观点是,以前的代码比较干净,因为在一个范围之外启动一个代码是常见的,也是可以理解的。加一个回来是“微妙的”,会让每个人都怀疑它是否正确

做出更改的最清晰方式可能是:

while (a[j--] > pivot) {
    if (j+1 == left) { //adding one back in
        break;
    }
}

我认为这是非常干净的,比原来的更好,因为你从int j=右边开始。

< p>在循环中的其他地方与j的值进行比较。如果计数器以j=right开始,在用-j或j-递减j后,这些点的j值将与以j=right+1开始时的j值不同,j值将与循环中其他位置的j值进行比较。如果计数器以j=right开始,在用-j或j递减j之后,这些点的j值将与以j=right+1开始时的j值不同。谢谢,我现在明白我们为什么从外部开始了。我在没有做右+1的情况下成功了,但我要坚持原创性。汉克斯,我现在明白我们为什么要从外面开始了。我没有做一个正确的+1,但我会坚持原来的