戦国IT - 情報処理技術者試験の過去問対策サイト
お知らせお問い合わせ料金プラン

応用情報技術者 2012年 春期 午前207


問題文

次の手順はシェルソートによる整列を示している。データ列 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)の繰り返し回数は2回で整列が完了します。
  • 根拠:初期のHはデータ数9÷3=3、次にHは3÷3=1、さらに1÷3=0となり0で終了。
  • 差がつくポイント:Hの更新と切り捨て計算を正確に理解し、繰り返し回数を数えることが重要です。

正解の理由

手順(1)でHを9÷3=3と設定し、手順(3)でHを3÷3=1に更新します。
次に再度手順(3)でHを1÷3=0に更新し、0になったため整列完了です。
よって手順(3)は2回繰り返されます。これが正解の理由です。

よくある誤解

Hの更新時に小数点以下を切り捨てることを忘れ、繰り返し回数を多く数えてしまうことがあります。
また、初期Hの計算を誤ると全体の繰り返し回数もずれてしまいます。

解法ステップ

  1. データ数9を3で割り、初期Hを計算する(9÷3=3)。
  2. Hを使って部分列を挿入法で整列する(手順(2))。
  3. Hを3で割り、小数点以下切り捨てで更新する(3÷3=1)。
  4. Hが0でなければ手順(2)に戻る。
  5. 再度Hを3で割り切り捨てる(1÷3=0)と0になるので終了。
  6. 手順(3)の繰り返し回数は2回と判定する。

選択肢別の誤答解説

  • ア: 2
    正解。Hの更新を正しく理解し、2回繰り返すことを示している。
  • イ: 3
    Hの更新回数を1回多く数えてしまった誤り。
  • ウ: 4
    Hの計算を誤り、繰り返し回数を過大評価している。
  • エ: 5
    Hの更新を繰り返しすぎてしまい、実際の手順と合わない。

補足コラム

シェルソートは挿入ソートの改良版で、間隔Hを徐々に小さくして整列を進めます。
間隔Hの選び方や更新方法は性能に大きく影響し、今回のようにで更新する方法は基本的な手法の一つです。
小数点以下の切り捨てを正確に行うことが重要です。

FAQ

Q: なぜHを3で割るのですか?
A: シェルソートの間隔を徐々に狭めるためで、3で割ることで効率的に整列を進めます。
Q: 小数点以下を切り捨てる理由は?
A: 配列のインデックスは整数なので、間隔Hも整数にする必要があるためです。

関連キーワード: シェルソート、挿入法、整列アルゴリズム、小数点切り捨て、繰り返し回数
← 前の問題へ次の問題へ →
戦国ITクイズ機能

\ せっかくなら /

応用情報技術者
クイズ形式で学習しませんか?

クイズ画面へ遷移する

すぐに利用可能!

©︎2026 情報処理技術者試験対策アプリ

このサイトについてプライバシーポリシー利用規約特商法表記開発者について