図は、n個の配列の数値を大きい順(降順)に並べ替えるプログラムのフローチャートである。次の(a)及び(b)の問に答えよ。
図中の(ア)〜(ウ)に当てはまる処理の組合せとして、正しいものを次の(1)〜(5)のうちから一つ選べ。
図はタップで拡大できます。
回答を選ぶ
選択肢を押すと、すぐに結果が表示されます。
要点
正解は(5)。降順に並べ替えるため、前の要素 a[i] が後ろの a[j] より小さいときに交換します。交換処理は一時変数 m に a[i] を退避し、a[i] に a[j]、a[j] に m を入れます。
詳細解説
正解は(5)です。
フローチャートの穴埋め
このアルゴリズムは単純選択法(またはバブルソートの一種)による並べ替えです。
降順(大きい順)にしたいので、配列の前の方 \(a[i]\) が後ろの方 \(a[j]\) よりも小さければ \((a[i] < a[j])\)、値を交換する必要があります。よって条件(ア)は \(a[i] < a[j]\) です。
交換処理 X は、一時変数 \(m\) を使ったスワップ処理です。
\(m \leftarrow a[i]\) (退避)
(イ) \(a[i] \leftarrow a[j]\) (上書き)
(ウ) \(a[j] \leftarrow m\) (復帰)
これにより、(5)が正解となります。