応用情報技術者試験 平成31年春 午前問6 解説付き過去問
問題
次の手順はシェルソートによる整列を示している。
データ列 7,2,8,3,1,9,4,5,6 を手順(1)~(4)に従って整列するとき、手順(3)を何回繰り返して完了するか。
ここで、[ ]は小数点以下を切り捨てた結果を表す。
〔手順〕
〔手順〕
- "H←[データ数÷3]"とする。
- データ列を、互いにH要素分だけ離れた要素の集まりからなる部分列とし、それぞれの部分列を、挿入法を用いて整列する。
- "H←[H÷3]"とする。
- Hが0であればデータ列の整列は完了し、0でなければ(2)に戻る。
正解
解説
この問題は、シェルソートにおいて、間隔Hを更新する手順(3)が何回繰り返されるかを問うものです。シェルソートは、一定間隔ごとの挿入ソートを繰り返し、徐々に間隔を狭めながら最終的に完全な整列を行うアルゴリズムです。
- 初期のHの設定
データ数が9個であるため、初期のHは次のように求められます。
H ← [9 ÷ 3] = 3
このH=3を用いて部分列ごとの挿入ソートが行われます。 - Hの更新と繰り返し回数の確認
手順(3)で H ← [H ÷ 3] の操作が繰り返されます。
- 1回目の手順(3): H ← [3 ÷ 3] = 1
- 2回目の手順(3): H ← [1 ÷ 3] = 0
したがって、手順(3)を繰り返す回数は2回であり、これが正解となります。