データ構造とアルゴリズム

配列 29, 10, 14, 37, 13 を選択ソート(未整列の部分から最小値を探し、未整列の部分の先頭と交換する)で昇順に並べる。この操作を2回行った後の配列はどれか。

  1. A10, 13, 14, 37, 29
  2. B10, 14, 29, 37, 13
  3. C10, 14, 13, 29, 37
答えと解説を見る

正解:A. 10, 13, 14, 37, 29

1回目は全体の最小値10を先頭の29と交換して 10, 29, 14, 37, 13 になります。2回目は2番目以降の最小値13を2番目の29と交換して 10, 13, 14, 37, 29 になります。選択ソートの比較は常に n(n−1)/2 回ですが、交換は1回の操作につき最大1回なので、書き込みの重いデータで有利なことがあります。10, 14, 29, 37, 13 は挿入ソートで2つの要素を差し込んだ後、10, 14, 13, 29, 37 はバブルソートを2パス行った後の配列です。

  • A. 正しい。10と13が順に前へ交換されます。
  • B. 挿入ソートで10と14を差し込んだ後の配列です。
  • C. バブルソートを2パス行った後の配列です。
この分野を解く 分野ページへ

関連する計算ツール

データ構造とアルゴリズムの参考書を探す PR

Amazonの検索結果へのリンクです。Amazonのアソシエイトとして、半導体教室は適格販売により収入を得ています。

データ構造とアルゴリズムのほかの問題

  1. 要素数10の配列を挿入ソートで昇順に並べる。2番目以降の要素を順に取り出し、左隣から順に比べて、取り出した値以下の要素が見つかるか先頭に達するまで比べる。最初から昇順に並んでいる場合と、降順に並んでいる場合の比較の回数の組はどれか。
  2. 最悪の場合でも計算量が O(n log n) で、作業用の配列などの追加の記憶領域をほとんど使わずに並べ替えられるソートはどれか。
  3. (名前, 点数) のデータ (A, 80)、(B, 70)、(C, 80)、(D, 70) がこの順に並んでいる。点数の昇順に安定ソートで並べ替えたときの名前の順はどれか。
  4. クイックソートの計算量が O(n²) になる典型的な場合はどれか。
  5. マージソートで、昇順に整列済みの2つの列 1, 4, 7, 9 と 2, 3, 8, 10 を、先頭どうしを比べて小さい方を出力することを繰り返して1つの列にまとめる(マージする)。片方の列が空になったら、残りは比べずにそのまま出力する。比較の回数は何回か。