令和8年度 問67 配列を並べ替える手続の途中経過
手続 sort は,要素数が2以上の整数型の配列を引数 numberArray で受け取り,その要素を昇順に並べ替えた結果を出力する。手続 sort の動作確認のために,処理の途中でjの値と workArray の全ての要素を出力する。配列 numberArray を{3,5,1,2,4}とし,手続 sort を sort(numberArray) として呼び出したとき,jの値が3と出力された直後の workArray の全ての要素の出力はどれか。ここで,配列の要素番号は1から始まる。 〔プログラム〕
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が3と出力された直後の配列です。
処理を追うと
- 初期配列は
{3,5,1,2,4}です。 - j=1では最小値1と先頭の3を交換し、
{1,5,3,2,4}となります。 - j=2では残りの最小値2と5を交換し、
{1,2,3,5,4}となります。 - j=3では残りの
{3,5,4}の最小値3が既にその先頭にあるため、並びは変わりません。
正解:イ
出力は 1,2,3,5,4 です。この時点で末尾の5と4はまだ整列していません。

続けて練習して、学習記録を残そう。
同じ分野の別の問題を解く同じ分野の問題
編集・確認:kakoloop · 編集方針
公開日:
内容更新:
問題・解説の誤りを報告する![手続sortのプログラム。入力をworkArrayに複製。jを1から要素数-1まで増やし、minIndexをjに設定。kをj+1から要素数まで走査し、より小さい要素を見つけるとminIndexをkに変更。workArray[j]とworkArray[minIndex]を交換した後、jと配列全体を出力する。繰返し終了後も配列全体を出力する。](/seo/media/a5b3cd51d7b138d48bca02a7d8eadcc6b16075ebbed1da570f956c47bf7b24f2.webp)