パスポイ

手続sortは,要素数が2以上の整数型の配列を引数numberArrayで受け取… ITパスポート 令和8年度 問67

テクノロジ系

手続sortは,要素数が2以上の整数型の配列を引数numberArrayで受け取り,その要素を昇順に並べ替えた結果を出力する。手続sortの動作確認のために,処理の途中でjの値とworkArrayの全ての要素を出力する。配列numberArrayを{3, 5, 1, 2, 4}とし,手続sortをsort(numberArray)として呼び出したとき,jの値が3と出力された直後のworkArrayの全ての要素の出力はどれか。ここで,配列の要素番号は1から始まる。 〔プログラム〕

○sort(整数型の配列: numberArray)
  整数型: minIndex, j, k
  整数型の配列: workArray ← numberArray // 配列の複製を作る
  for (jを1から (workArrayの要素数 − 1) まで1ずつ増やす)
    // j番目から末尾までの要素の中で最も小さい値をもつ要素の要素番号を
    // 一つ求める
    minIndex ← j
    for (kを (j + 1) からworkArrayの要素数 まで1ずつ増やす)
      if (workArray[k] がworkArray[minIndex] より小さい)
        minIndex ← k
      endif
    endfor
    workArray[j] とworkArray[minIndex] の値を入れ替える

    // 動作確認のために,jの値とworkArrayの全ての要素を出力する
    jの値を出力する
    workArrayの全ての要素 を先頭から順にコンマ区切りで出力する
  endfor
  workArrayの全ての要素 を先頭から順にコンマ区切りで出力する
  • ア1,2,3,4,5
  • イ1,2,3,5,4
  • ウ4,5,3,2,1
  • エ5,4,3,2,1
正解と解説を見る

正解

イ 1,2,3,5,4

選択ソートの手順を追うと、j=1では最小値1がworkArray[1]と入れ替わり{1,5,3,2,4}、j=2では2番目に小さい2がworkArray[2]と入れ替わり{1,2,3,5,4}となる。j=3では3番目に小さい値が既にworkArray[3]の位置(値3)にあるため入れ替えは実質発生せず、出力は{1,2,3,5,4}のままとなる。

出典:令和8年度 ITパスポート試験 問67

問題文および選択肢は独立行政法人情報処理推進機構(IPA)が公開する試験問題に基づいています。著作権はIPAに帰属します。解説は当サイトが独自に作成したものです。

解くほどポイントが貯まり、称号が上がる

無料登録すると過去問演習のスコアが月間ランキングに記録されます。1回10問・スマホでサクッと。