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
答え
分野 : テクノロジ系 › 基礎理論 › アルゴリズムとプログラミング › アルゴリズムとプログラミング
解説
配列(3,5,1,2,4)に対して選択ソートアルゴリズムを実行し,jの値が3と出力された直後のworkArrayの状態を求める問題です。答えは「イ」です。選択ソートは,j番目から末尾までの中で最小の値を探し,それをj番目の要素と入れ替える処理をjを1つずつ増やしながら繰り返します。

j=1のとき最小値の1(3番目の要素)と1番目の要素3を入れ替え,配列は(1,5,3,2,4)になります。j=2のとき2番目以降の最小値2(4番目の要素)と2番目の要素5を入れ替え,配列は(1,2,3,5,4)になります。j=3のとき3番目以降の最小値は3自身であり,入れ替えは実質的に発生せず配列は(1,2,3,5,4)のままとなります。従って,jが3と出力された直後の workArray は 1,2,3,5,4 となり,選択肢「イ」が正解です。
ホーム画面への追加方法
1.ブラウザの 共有ボタンのアイコン 共有ボタンをタップ
2.メニューの「ホーム画面に追加」をタップ
閉じる