あるデータ列を整列したら状態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 |