過去問解きまくり研究所 ホーム

平成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

解説

間隔を割り直す手順を通るのは二回です。

シェルソートは、離れた要素どうしをまとめて整列し、その間隔を狭めながら繰り返す方法です。この問で追うのは並びの中身ではなく、間隔を表す値の変化だけです。データは九個ですので、最初の手順で九を三で割り、小数点以下を切り捨てて三になります。この間隔で部分列を整列したあと、間隔を三で割り直す手順に進み、三割る三で一になります。ここが数える一回目です。値が零ではないので整列に戻り、間隔が一、つまり隣どうしの挿入法になります。ふたたび間隔を割り直すと、一割る三は零点三三…ですから、切り捨てて零になります。これが二回目です。値が零になった時点で整列は完了しますので、割り直す手順を通った回数は二回です。最初に間隔を決める割り算は別の手順に書かれており、数える対象には入りません。

ほかの選択肢はなぜ違うのか

出典:平成24年度 春期 応用情報技術者試験 午前 問7

この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)