次の記述中の □ に入れる正しい答えを,解答群の中から選べ。ここで,配列の要素番号は1から始まる。
次の手続sortは,大域の整数型の配列dataの,引数firstで与えられた要素番号から引数lastで与えられた要素番号までの要素を昇順に整列する。ここで,first<lastとする。手続sortをsort(1, 5) として呼び出すと,/*** α ***/ の行を最初に実行したときの出力は"□"となる。
〔プログラム〕
大域: 整数型の配列: data ← {2, 1, 3, 5, 4}
○sort(整数型: first, 整数型: last)
整数型: pivot, i, j
pivot ← data[(first + last) ÷ 2 の商]
i ← first
j ← last
while (true)
while (data[i] < pivot) : i ← i + 1 : endwhile
while (pivot < data[j]) : j ← j - 1 : endwhile
if (i ≧ j)
繰返し処理を終了する
endif
data[i]とdata[j]の値を入れ替える
i ← i + 1
j ← j - 1
endwhile
dataの全要素の値を要素番号の順に空白区切りで出力する /*** α ***/
if (first < i - 1)
sort(first, i - 1)
endif
if (j + 1 < last)
sort(j + 1, last)
endif
1〜4キーで選択