問題
図中の(ア)~(ウ)に当てはまる処理の組合せとして、正しいものを次の選択肢の中から一つ選べ。
ループを使い、配列の中身を入れ替えていく処理を行っています。
プログラミングの知識があれば、
見ただけで並べ替えの処理だろうことがわかりますが、
知らなければ初見では分かりづらいと思います。
1からnまでの配列a[1]~a[n]について、
iに1を代入し、
iよりも1大きいjを用意しています。
その後、条件[ア]について、
YESならば、mにa[i]を代入したのち、
[イ]・[ウ]の処理を続けます。
一方[ア]がNOならば、この処理はスキップされ、
jの次の数字を参照し、
これが、配列の最大番を超えていないかを確認しています。
よって、想定される並べ替え処理は、
あるiを固定し、
jにはiより後の番号を最大番に到達するまで参照して行きながら、
j番のa[j]の方が、i番のa[i]よりも大きければ、 ⇒[ア]
mにa[i]を仮保存し、
a[i]とa[j]を入れ替えるため、
a[i]にa[j]を入れて、 ⇒[イ]
a[j]には仮保存しておいたm(=当時のa[i])を入れる、 ⇒[ウ]
という処理です。
よって、正解は[5]です。
正解:【5】
この問題にあるプログラムは、2つのループを回して、数値を大きい順に並べ替える構造です。
配列の“頭”に、順番に大きい数値を持ってくる構造になっています。
Xの部分は、並べかえるコマンドの部分になります。a[i]とa[j]を入れ替えるようになっています。
並べる対象の場合、一時保存用変数mに a[i] を保存するので、(イ)では a[i] に a[j] を入れ、最後の(ウ)では a[j]に一時保存したmを入れます。
この一連のコマンドはa[j]を配列の頭の方に持ってくるので、a[i]がa[j]より小さい時実行する必要があります。
上記より、
(ア)は a[i] < a[j]
(イ)は a[i] ← a[j]
(ウ)は a[j] ← m
となります。
以上により、選択肢の【5】が正解となります。