平成24年度 春期 午前 問7
アルゴリズム
シェルソートに関する問題
次の手順はシェルソートによる整列を示している。データ列 7,2,8,3,1,9,4,5,6 を手順 (1) 〜 (4) に従って整列するとき,手順 (3) を何回繰り返して完了するか。ここで,[ ]は小数点以下を切り捨てた結果を表す。
〔手順〕
(1) [データ数÷3]→ H とする。
(2) データ列を,互いに H 要素分だけ離れた要素の集まりからなる部分列とし,
それぞれの部分列を,挿入法を用いて整列する。
(3) [H÷3]→ H とする。
(4) H が 0 であればデータ列の整列は完了し,0 でなければ (2) に戻る。- ア2
- イ3
- ウ4
- エ5
答えと解説を見る
✓ これが正解ア2
解説
間隔を割り直す手順を通るのは二回です。
シェルソートは、離れた要素どうしをまとめて整列し、その間隔を狭めながら繰り返す方法です。この問で追うのは並びの中身ではなく、間隔を表す値の変化だけです。データは九個ですので、最初の手順で九を三で割り、小数点以下を切り捨てて三になります。この間隔で部分列を整列したあと、間隔を三で割り直す手順に進み、三割る三で一になります。ここが数える一回目です。値が零ではないので整列に戻り、間隔が一、つまり隣どうしの挿入法になります。ふたたび間隔を割り直すと、一割る三は零点三三…ですから、切り捨てて零になります。これが二回目です。値が零になった時点で整列は完了しますので、割り直す手順を通った回数は二回です。最初に間隔を決める割り算は別の手順に書かれており、数える対象には入りません。
ほかの選択肢はなぜ違うのか
- イ3:最初に間隔を決める割り算も同じ手順として数えると、この値になります。その割り算は繰り返しに入る前の一度きりで、間隔を割り直す手順とは別の行に書かれています。
- ウ4:割り算のたびに小数点以下を切り捨てることを見落とし、間隔が零に落ちずに繰り返しが続くと読んだ場合の値です。切り捨てれば一の次はすぐに零になります。
- エ5:こちらも切り捨てを行わず、間隔が零へ近づき続けると読んだ場合に出てくる値です。データが九個であれば、間隔は三、一、零と三段で終わります。
出典:平成24年度 春期 応用情報技術者試験 午前 問7
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)