次の記述中の に入れる正しい答えを、解答群の中から選べ。ここで、配列の要素番号は1から始まる。 次の手続sortは、大域の整数型の配列dataの、引数firstで与えられた要素番号から引数lastで与えられた要素番号までの要素を昇順に整列する。ここで、first < last とする。手続sortをsort(1, 5)として呼び出すと、/* α */の行を最初に実行したときの出力は" "となる。 〔プログラム〕 大域: 整数型の配列: data ← {2, 1, 3, 5, 4} ○sort(整数型: first, 整数型: last) 整数型: pivot, i, j pivot ← data[(first + last) ÷ 2 の商] i ← first j ← last while (true) while (data[i] < pivot) i ← i + 1 endwhile while (pivot < data[j]) j ← j - 1 endwhile if (i ≧ j) 繰返し処理を終了する endif data[i]とdata[j]の値を入れ替える i ← i + 1 j ← j - 1 endwhile dataの全要素の値を要素番号の順に空白区切りで出力する /* α */ if (first < i - 1) sort(first, i - 1) endif if (j + 1 < last) sort(j + 1, last) endif
枢軸位置で左右が出会うと交換なしで分割が終わる
選択肢
- ア1 2 3 4 5
- イ1 2 3 5 4
- ウ2 1 3 4 5
- エ2 1 3 5 4
正解と解説
正解:エ 2 1 3 5 4
枢軸はdata[(1+5)÷2]=data[3]=3となる。左からは2、1と枢軸未満が続き、3個目の3で止まるのでiは3、右からは4、5と枢軸超が続き3個目の3で止まるのでjも3になる。i≧jで即座に分割ループを抜けるため、交換は一度も起こらず、初期状態のまま出力される。
選択肢ごとの解説
- ア整列が完了した状態であり、最初の分割の時点ではまだこの並びにならない。
- イ後半だけが整列された状態で、交換が起きていない初回出力とは一致しない。
- ウ後半の5と4が入れ替わっているが、初回の走査では交換が発生しない。
- エiもjも枢軸の位置3で止まり交換なしに抜けるので、初期配列のまま出力される。
同じ分野の他の問題
- クイックソートの処理方法を説明したものはどれか。2018年度 秋期 午前 問6
- 次の記述中の に入れる正しい答えを、解答群の中から選べ。ここで、配列の要素番号は1から始まる。 関数mergeは、昇順に…2024年度 公開問題 科目B 問4
- 次の記述中の に入れる正しい答えを、解答群の中から選べ。ここで、配列の要素番号は1から始まる。 関数binSortをbi…2022年度 公開問題 科目B 問11
- 次のプログラム中の a と b に入れる正しい答えの組合せを、解答群の中から選べ。ここで、配列の要素番号は1から始まる。…2026年度 公開問題 科目B 問5
- 次のプログラム中の a と b に入れる正しい答えの組合せを、解答群の中から選べ。ここで、配列の要素番号は1から始まる。…2026年度 公開問題 科目B 問4
最終更新:2026-08-25/解説・選択肢ごとの解説は資格暗記が独自に作成しています。問題文と選択肢の出典は上記のとおりです。