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

令和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,5,4

解説

jが3のときは入替えが起きず、1,2,3,5,4です。

この手続は、j番目から末尾までの中でいちばん小さい値を探し、それをj番目と入れ替えることを繰り返して、小さい順に並べます。配列は3,5,1,2,4から始まります。jが1のときは1番目から5番目の中で最小の1を選び、1番目と入れ替えて1,5,3,2,4になります。jが2のときは2番目から5番目の中で最小の2を選び、2番目と入れ替えて1,2,3,5,4になります。jが3のときは3番目から5番目の3,5,4のうち最小は先頭の3なので、入れ替える相手が自分自身になり、並びは変わりません。よってjの値が3と出力された直後の出力は1,2,3,5,4です。

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

この問題の用語

出典:令和8年度 ITパスポート試験 問67(改変:原典の図表をテキストに書き起こした)

同じ用語が出る問題

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