ITパスポート 過去問
令和8年度
問67 (テクノロジ系 問13)

このページは閲覧用ページです。
履歴を残すには、 「新しく出題する(ここをクリック)」 をご利用ください。

問題

ITパスポート試験 令和8年度 問67(テクノロジ系 問13) (訂正依頼・報告はこちら)

手続sortは、要素数が2以上の整数型の配列を引数numberArrayで受け取り、その要素を昇順に並べ替えた結果を出力する。手続sortの動作確認のために、処理の途中での値と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件)

01

この手続は、未整列部分から最小値を選び、先頭側へ順に移す選択ソートです。j回目の処理後には、先頭からj個の要素が小さい順に確定します。

選択肢1. 1,2,3,4,5

j=3の処理後には先頭3要素の1、2、3までは確定しますが、末尾の4と5はまだ入れ替わっていないため、この並びにはなりません。

選択肢2. 1,2,3,5,4

正しいです。初期値3,5,1,2,4から、j=1で1,5,3,2,4、j=2で1,2,3,5,4となります。j=3では未整列部分3,5,4の最小値が既に3なので、1,2,3,5,4のままです。

選択肢3. 4,5,3,2,1

この並びは小さい値を先頭へ移す選択ソートの途中結果になっておらず、昇順に確定していく先頭部分とも一致しません。

選択肢4. 5,4,3,2,1

これは降順の並びであり、最小値を先頭から順に置くこの手続の動作と反対です。

まとめ

各周回で未整列部分の最小値をj番目に置くと追跡します。

参考になった数0