2025(令和7)年度全学部一般選抜入学試験 2月試験(前期)(2月5日) 「情報」大問〔Ⅲ〕の問1の別解「ア=①、イ=④、ウ=⓪、エ=⑧」の解説

  • トップ
  • 入試情報
  • 2025(令和7)年度全学部一般選抜入学試験 2月試験(前期)(2月5日) 「情報」大問〔Ⅲ〕の問1の別解「ア=①、イ=④、ウ=⓪、エ=⑧」の解説

本設問で示した疑似コードは、隣接する要素を比較・交換する処理を、外側ループと内側ループの二重構造で繰り返すことにより、配列の要素を並べ替えるプログラムである。この構造は、一般に バブルソート(隣接要素の比較を繰り返す整列法)に相当する処理として理解できる。
大学が補足的に正答として追加公表する解答パターンは、外側ループ・内側ループの範囲設定が当初公表の解答とは異なるものの、外側ループの各回の終了時点で「配列の右端側から順に、最小の要素が確定していく」内側ループにおいて、未確定部分のすべての隣接要素について比較と交換が漏れなく実行されるという、バブルソートとして本質的な条件が保たれている。
その結果、「プログラムとして成立し、任意の入力に対して、問題文で求められた並び替え結果を必ず得る」ことが保証されるため、疑似コードの読み取りとして正答と認めることができる解答パターンである。なお、この補足正答パターンは、外側ループの開始値が 2 となっている点で、教育上の一般的な記述とは異なるが、選択肢として提示された条件の範囲内で、処理結果が理論的に保証されることから、正答として扱うものである。

詳細な解説は以下のとおり。

Tokuten = [68, 92, 80, 80, 80, 60, 87, 96, 70, 70]に対して、
(03)行目で i を i=2 から i=n=10 まで1ずつ増やしながら繰り返す。

i=2 の場合、(04)行目の j を j=0 から j=n-i=10-2=8 まで1ずつ増やしながら繰り返す。
(05)行目で、もし Tokuten[j] < Tokuten[j+1] が真ならば、
(06)行目で Tokuten[j] と Tokuten[j+1] を入れ替える。

j=0 のとき、(Tokuten[0]=68) < (Tokuten[1]=92) は真なので(06)行目の処理を行い
Tokuten = [92, 68, 80, 80, 80, 60, 87, 96, 70, 70] となる。

j=1 のとき、(Tokuten[1]=68) < (Tokuten[2]=80) は真なので(06)行目の処理を行い
Tokuten = [92, 80, 68, 80, 80, 60, 87, 96, 70, 70] となる。

j=2 のとき、(Tokuten[2]=68) < (Tokuten[3]=80) は真なので(06)行目の処理を行い
Tokuten = [92, 80, 80, 68, 80, 60, 87, 96, 70, 70] となる。

j=3 のとき、(Tokuten[3]=68) < (Tokuten[4]=80) は真なので(06)行目の処理を行い
Tokuten = [92, 80, 80, 80, 68, 60, 87, 96, 70, 70] となる。

j=4 のとき、(Tokuten[4]=68) < (Tokuten[5]=60) は偽なので、(06)行目の処理を行なわず
Tokuten = [92, 80, 80, 80, 68, 60, 87, 96, 70, 70] のままとなる。

j=5 のとき、(Tokuten[5]=60) < (Tokuten[6]=87) は真なので(06)行目の処理を行い
Tokuten = [92, 80, 80, 80, 68, 87, 60, 96, 70, 70] となる。

j=6 のとき、(Tokuten[6]=60) < (Tokuten[7]=96) は真なので(06)行目の処理を行いTokuten = [92, 80, 80, 80, 68, 87, 96, 60, 70, 70 ] となる。

j=7 のとき、(Tokuten[7]=60) < (Tokuten[8]=70) は真なので(06)行目の処理を行い
Tokuten = [92, 80, 80, 80, 68, 87, 96, 70, 60, 70] となる。

j=8 のとき、(Tokuten[8]=60) < (Tokuten[9]=70) は真なので(06)行目の処理を行い
Tokuten = [92, 80, 80, 80, 68, 87, 96, 70, 70, 60] となる。

これで、i=2 のときの処理は終わり、最小値が配列の末尾に移動し、この位置で確定する。
i=3 のとき、j は 0 から 7 まで1ずつ増やしながら繰り返す。
i=2 のときと同様の手続きを実行すると、
Tokuten = [92, 80, 80, 80, 87, 96, 70, 70, 68, 60] となり、配列の末尾2つが決定する。

i=4 のときも、上と同様の手続きを実行すると、
Tokuten = [92, 80, 80, 87, 96, 80, 70, 70, 68, 60] となり、配列の末尾3つが決定する。

i=5 のときも、上と同様の手続きを実行すると、
Tokuten = [92, 80, 87, 96, 80, 80, 70, 70, 68, 60] となり、配列の末尾4つが決定する。

i=6 のときも、上と同様の手続きを実行すると、
Tokuten = [92, 87, 96, 80, 80, 80, 70, 70, 68, 60] となり、配列の末尾5つが決定する。

i=7 のときも、上と同様の手続きを実行すると、
Tokuten = [92, 96, 87, 80, 80, 80, 70, 70, 68, 60] となり、配列の末尾6つが決定する。

i=8 のときも、上と同様の手続きを実行すると、
Tokuten = [96, 92, 87, 80, 80, 80, 70, 70, 68, 60] となり、配列の末尾7つが決定する。

i=9 のときも、上と同様の手続きを実行すると、
Tokuten = [96, 92, 87, 80, 80, 80, 70, 70, 68, 60] となり、配列の末尾8つが決定する。

i=10 のとき、j が 0 のみで、(05)行目を実行する。
(Tokuten[0]=96) < (Tokuten[1]=92) は偽なので、(06)行目の処理は行われず、最終的に
Tokuten = [96, 92, 87, 80, 80, 80, 70, 70, 68, 60] を得てプログラムは終了する。

以上

お問い合わせ Inquiry