このスニペット コードとクイックソートの実装を見てください。これは本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 が別個であると言うのは正しいですか。1 つは低い値をピボットと比較し、もう 1 つは高い値を比較し、while ループの各基準が満たされたときに交換します。i がインクリメントされ、j がデクリメントされるたびに for ループがプロセスを続行し、if ステートメントの基準が満たされるまで、その時点で for ループから抜け出すのでしょうか? これは正しいです?
編集:本の内容を正確に反映するようにコードを更新しました。