请看一下这个来自快速排序的代码片段和实现,它来自《Data Structures and Problem Solving Using Java 》一书:
int i, j;
for(i = low, j = high -1;;){
while(array[++i].compareTo(pivot) < 0)
;
while(pivot.compareTo(array[--j]) < 0)
;
if(i >= j)
break;
swapReferences(array, i, j);
}
我很难理解这是如何工作的。根据我的理解,for 循环只是声明了起点,并且不包含任何关于何时完成 for 循环的规则;这是由 if 语句处理的,对吗?此外,如果没有括号,我不清楚 while 循环。分号和没有缩进表明它们没有嵌套。但是循环中没有实际的代码。我是否正确地说每个while都是独立的,一个将较低的值与枢轴进行比较,一个比较较高的值,在满足每个while循环标准时进行交换。每次 for 循环继续执行该过程时, i 递增并且 j 递减,直到满足 if 语句的条件,此时它会从 for 循环中中断?它是否正确?
编辑:更新代码以准确反映书中的内容。