手続sortは、要素数が2以上の整数型の配列を引数numberArrayで受け取り、その要素を昇順に並べ替えた結果を出力する。手続sortの動作確認のために、処理の途中でjの値とworkArrayの全ての要素を出力する。配列numberArrayを{3, 5, 1, 2, 4}とし、手続sortをsort(numberArray)として呼び出したとき、jの値が3と出力された直後のworkArrayの全ての要素の出力はどれか。ここで、配列の要素番号は1から始まる。
選択ソートはj回目までに先頭j個が確定する
![選択ソートの疑似言語プログラム。〇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の全ての要素を先頭から順にコンマ区切りで出力する](/data/ip/figures/ip-2026a-main-67.jpg)
選択肢
- ア1, 2, 3, 4, 5
- イ1, 2, 3, 5, 4
- ウ4, 5, 3, 2, 1
- エ5, 4, 3, 2, 1
正解と解説
正解:イ 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}のまま出力される。
選択肢ごとの解説
- ア完全に整列した状態だが、j=3の時点ではまだ末尾2要素が入れ替わっていない。
- イj=3終了時点の並びと一致しており、これが正解。
- ウ降順に近い並びで、昇順に整列していく過程とは合わない。
- エ元の配列とも処理途中の状態とも一致しない。
同じ分野の他の問題
- 4個の要素から成るデータの並びを、次の手順を繰り返して昇順に整列するとき、整列が終了するまでに(1)から(3)の一連の手…2025年度 秋期 問98
- 手続printArrayは、配列integerArrayの要素を並べ替えて出力する。手続printArrayを呼び出した…2023年度 秋期 問60
- 関数isPrimeは、引数として与えられた正の整数が、素数であればtrueを、素数でなければfalseを戻り値とする。例…2026年度 秋期 問85
- 関数calculateAmountOfPrizeは、業務改善の効果における改善額と短縮期間を、それぞれimproveme…2025年度 秋期 問99
- 手続calcMod3を呼び出したときの出力はどれか。 〔プログラム〕 ○calcMod3() 整数型: totalVal…2025年度 秋期 問78
最終更新:2026-08-25/解説・選択肢ごとの解説は資格暗記が独自に作成しています。問題文と選択肢の出典は上記のとおりです。