ITパスポート 過去問
令和8年度
問67 (テクノロジ系 問13)
問題文
[プログラム]
◯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の全ての要素を先頭から順にコンマ区切りで出力する
付箋
付箋は自分だけが見れます(非公開です)。
このページは閲覧用ページです。
履歴を残すには、 「新しく出題する(ここをクリック)」 をご利用ください。
問題
ITパスポート試験 令和8年度 問67(テクノロジ系 問13) (訂正依頼・報告はこちら)
[プログラム]
◯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個の要素が小さい順に確定します。
j=3の処理後には先頭3要素の1、2、3までは確定しますが、末尾の4と5はまだ入れ替わっていないため、この並びにはなりません。
正しいです。初期値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のままです。
この並びは小さい値を先頭へ移す選択ソートの途中結果になっておらず、昇順に確定していく先頭部分とも一致しません。
これは降順の並びであり、最小値を先頭から順に置くこの手続の動作と反対です。
各周回で未整列部分の最小値をj番目に置くと追跡します。
参考になった数0
この解説の修正を提案する
前の問題(問66)へ
令和8年度 問題一覧
次の問題(問68)へ