public void doSort(int[] array, int left, int right) {
int pivot;
if ( left==right/*doSortの終了する条件*/ ) {
return;
} else {
// doSortがすべき処理を書く
int leftNumber=left;
int rightNumber=right-1;
pivot = array[ right ];// 一番右端をpivotに設定する
// pivotより小さい場合左からサーチを続ける
while (array[leftNumber] < pivot) {
leftNumber++;
}
// pivotより大きい場合右からサーチを続ける
//問題の↓下の行がおかしいので ”&& left<rightNumber”の一文を追加
while (pivot < array[rightNumber] && left<rightNumber) {
rightNumber--;
}
// 入れ替えの処理
// doSortのすべき処理として、このサーチと入れ替え作業をいつまで繰り返せばいいのかを考える
array[right]=array[leftNumber];
array[leftNumber]=pivot;
doPrint(array);// これを記述すると現在のソート状況がわかる
doSort( array, left, rightNumber );
doSort( array, rightNumber+1, right );
}
}