選択ソートの途中状態|ITパスポート 令和8年 公開問題 問67

出典:令和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