次の記述中の に入れる正しい答えを、解答群の中から選べ。ここで、配列の要素番号は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

枢軸位置で左右が出会うと交換なしで分割が終わる

基本情報技術者試験2023年度 公開問題 科目B3/アルゴリズムとプログラミング / 整列アルゴリズム

選択肢

正解と解説

正解: 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年度 公開問題 基本情報技術者試験 科目B 問3(IPA)

同じ分野の他の問題

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