本文へスキップ

技術士試験(情報工学部門)・情報技術者試験。ファーストマクロ。


Since 2016.4.19

令和5年度 秋期 高度情報技術者試験問題と解説

問3

あるデータ列を整列したら状態0から順に状態1, 2, ・・・, N へと推移した。整列に使ったアルゴリズムはどれか。
 状態0 3, 5, 9, 6, 1, 2
 状態1 3, 5, 6, 1, 2, 9
 状態2 3, 5, 1, 2, 6, 9
     ・
     ・
     ・
 状態N 1, 2, 3, 5, 6, 9

ア クイックソート

イ 挿入ソート

ウ バブルソート

エ ヒープソート


正解


解説

ア クイックソートは、中間的な基準値を決めて、それよりも大きな値を集めた区分と、小さな値を集めた区分に要素を振り分け、次に、それぞれの区分の中で同様な処理を繰り返す。基準値の決定にもよるが、以下のような推移になる。
 状態0 3, 5, 9, 6, 1, 2
 状態1 3, 1, 2, 5, 9, 6
 状態2 1, 3, 2, 5, 6, 9
     ・
     ・
     ・
 状態N 1, 2, 3, 5, 6, 9

イ 挿入ソートは、最初の2つの要素を比較して、整列し3番目以降は、整列された範囲の中の適切な位置に挿入していく手法である。以下のような推移になる。
 状態0 3, 5, 9, 6, 1, 2
 状態1 3, 5, 9, 6, 1, 2
 状態2 3, 5, 9, 6, 1, 2
 状態3 3, 5, 6, 9, 1, 2
 状態4 1, 3, 5, 6, 9, 2
 状態5 1, 2, 3, 5, 6, 9

ウ 正しい。バブルソートは、隣り合う要素を比較して、大小の順が逆であれば、それらの要素を入れ替えるという操作を繰り返す。問題の場合は、最も大きな値からソートされるバブルソートである。

エ ヒープソートは、未整列の部分を順序木にし、そこから最小値を取り出して整列済の部分に移し、この操作を繰り返して、未整列の部分を縮めていく。以下のように1つずつ値が決まっていく推移になる。
 状態0 3, 5, 9, 6, 1, 2
 状態1 *, *, *, *, *, 9
 状態2 *, *, *, *, 6, 9
     ・
     ・
     ・
 状態N 1, 2, 3, 5, 6, 9

問2 目次 問4