PMプロジェクトマネージャ試験 午前Ⅰ

平成31年度春期 プロジェクトマネージャ 午前Ⅰ 問3

問題文と選択肢を読んで答えを考えてから、下の「正解と解説を見る」で確認しましょう。

問題

次の手順はシェルソートによる整列を示している。データ列 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)に戻る。

選択肢

  1. ア
    2
  2. イ
    3
  3. ウ
    4
  4. エ
    5
解き方のヒントを見る

処理回数を整理する考え方

処理回数を考えるときは、操作を数える単位と、入力全体を一度に扱うのか段階ごとに分けるのかを先に整理し、与えられた条件との対応を丁寧に確認しましょう。数える基準を途中で変えないことも重要です。

この問題で問われていること

注目する観点を、各段階で何を一回の処理として数えるかに絞りましょう。数え始める前に対象範囲と繰り返しの区切りをそろえると、見落としや重複を避けやすくなります。全体の基準を保って確認します。

視点

処理回数は、対象・区切り・数える操作の定義をそろえてから整理します。段階をまたぐときも、同じ基準で記録できているかを確認することが大切です。

確認ポイント

  • 一回として数える操作の単位を確認する
  • 処理を区切る段階や範囲を整理する
  • 同じ操作を重複して数えていないか見直す
正解と解説を見る

正解

ア

解説

データ数9から初期の間隔Hを求めると3になります。Hが3の段階で部分列を整列し、その後Hを1へ更新します。Hが1の段階でも整列した後、更新によってHが0になるため、手順(3)の繰返し回数は2回です。

理由

データ数は9なので、最初のHは[9÷3]=3です。1回目の手順(2)を終えると、手順(3)でHは[3÷3]=1になります。2回目の手順(2)の後、手順(3)でHは[1÷3]=0となり、手順(4)で終了します。したがって手順(3)は2回繰り返します。

比較

数える対象はHの値そのものではなく、手順(3)を実行した回数です。H=0になった後は手順(2)へ戻らないため、終了判定だけの段階を整列回数に加えてはいけません。

選択肢ア(正解)

これは正解だよ。データ数9から初期値H=[9÷3]=3を求め、H=3で整列した後に手順(3)を実行するとH=[3÷3]=1になります。H=1で再び整列した後、手順(3)でH=[1÷3]=0となるため、手順(3)の実行回数は2回です。

選択肢イ

これは不正解だよ。Hは3から1へ、さらに0へ更新されますが、手順(3)を実行するのはその更新の2回です。Hが0になった後は手順(4)で完了するため、終了判定の段階を追加の1回として数えることはできません。

選択肢ウ

これは不正解だよ。初期値H=3、次の値H=1、その次にH=0となる流れは、手順(3)を2回実行した時点で完了します。Hの異なる値を三つ数えても、その値の個数は手順(3)の実行回数とは一致しません。

選択肢エ

これは不正解だよ。手順(3)では毎回Hを3で割って小数点以下を切り捨てます。H=3から1、H=1から0の2回で終了するため、さらに整列処理や間隔更新を続ける前提は手順(4)の終了条件と合いません。

学習のポイント

シェルソートの間隔列と、整列処理の回数を正しく対応させる。

出典:独立行政法人 情報処理推進機構(IPA)平成31年度春期 プロジェクトマネージャ試験 午前Ⅰ 問3(公式資料:問題冊子(PDF) / 解答例)

関連する過去問一覧

IPA Advancedは非公式の学習サイトです。解説にはAIによる補助生成を含む場合があります。公式の問題冊子・解答例・採点講評を優先し、誤りは確認後に訂正します。運営・編集方針