手続sortは、要素数が2以上の整数型の配列を引数numberArrayで受け取り、その要素を昇順に並べ替えた結果を出力する。手続sortの動作確認のために、処理の途中でjの値とworkArrayの全ての要素を出力する。配列numberArrayを{3, 5, 1, 2, 4}とし、手続sortをsort(numberArray)として呼び出したとき、jの値が3と出力された直後のworkArrayの全ての要素の出力はどれか。ここで、配列の要素番号は1から始まる。

選択ソートはj回目までに先頭j個が確定する

ITパスポート2026年度 秋期67/アルゴリズムとプログラミング / 整列アルゴリズム

選択ソートの疑似言語プログラム。〇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の全ての要素を先頭から順にコンマ区切りで出力する
選択ソートの疑似言語プログラム。〇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番目以降で最小の要素を探して j番目と交換する処理を繰り返す。初期状態{3,5,1,2,4}に対し、j=1では最小値1と先頭を交換して{1,5,3,2,4}、j=2では最小値2と2番目を交換して{1,2,3,5,4}となる。j=3では3番目以降の最小値が既に3番目にあるため入替えは実質起こらず、配列は{1,2,3,5,4}のまま出力される。

選択肢ごとの解説

出典:令和8年度 秋期 ITパスポート試験 問67(IPA)

同じ分野の他の問題

最終更新:2026-08-25/解説・選択肢ごとの解説は資格暗記が独自に作成しています。問題文と選択肢の出典は上記のとおりです。