bot*_*bot 2 java sorting algorithm loops quicksort
请看一下quicksort的实现和实现的摘录,它出自《数据结构和使用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);
}
Run Code Online (Sandbox Code Playgroud)
我在理解其工作方式时遇到了一些麻烦。据我了解,for循环只是声明起点,并且不包含任何有关何时结束for循环的规则;是由if语句处理的,对吗?另外,没有括号,我不清楚while循环。分号和缺乏缩进表示它们没有嵌套。但是循环中没有实际的代码。我是否正确地说每一个while是分开的,一个将较低的值与枢轴比较,一个比较较高的值,则在满足每个while循环条件时交换。随着每次for循环继续执行该过程,i都会递增,而j会递减,直到满足if语句的条件时才从for循环中断?它是否正确?
编辑:更新了代码以准确反映本书中的内容。
您的分析是正确的。该while循环做好自己的工作含蓄,与++i和--j。可以将其重写为更清晰
do i++; while (array[i] < pivot);
do j--; while (pivot < array[j]);
Run Code Online (Sandbox Code Playgroud)