令和元年度春期 応用情報技術者試験 午前 問6
次の手順はシェルソートによる整列を示している。データ列 7,2,8,3,1,9,4,5,6 を手順(1)~(4)に従って整列するとき,手順(3)を何回繰り返して完了するか。ここで,[ ]は小数点以下を切り捨てた結果を表す。〔手順〕(1)"H←[データ数÷3]"とする。(2)データ列を,互いにH要素分だけ離れた要素の集まりから成る部分列とし,それぞれの部分列を,挿入法を用いて整列する。(3)"H←[H÷3]"とする。(4)Hが0であればデータ列の整列は完了し,0でなければ(2)に戻る。
- ア 2
- イ 3
- ウ 4
- エ 5
解答・解説を見る
正解:ア
AI解説
データ数は9なので手順(1)でH=[9÷3]=3となる。手順(2)で整列後、手順(3)の1回目でH=[3÷3]=1、Hは0でないので(2)に戻る。手順(3)の2回目でH=[1÷3]=[0.33…]=0となり、手順(4)で完了する。よって手順(3)の実行回数は2回であり、アが正解である。 ア: 正しい。Hは3→1→0と変化し、手順(3)は2回実行される。 イ: 3回は、初期値の計算(手順(1))を手順(3)と混同して数えた場合の誤りである。 ウ: 4回は、Hの変化を3→2→1→0のように1ずつ減ると誤解した場合などの誤りである。 エ: 5回はHの更新回数の数え方を大きく誤った値である。 💡 トレース問題は変数の値の変化(H:3→1→0)を書き出して、問われている手順の実行回数だけを正確に数える。切捨て記号[ ]の扱い([1÷3]=0)を見落とさないこと。
※Web掲載用に表記を一部変更しています。著作権はIPAに帰属します。