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

要素数10の配列を挿入ソートで昇順に並べる。2番目以降の要素を順に取り出し、左隣から順に比べて、取り出した値以下の要素が見つかるか先頭に達するまで比べる。最初から昇順に並んでいる場合と、降順に並んでいる場合の比較の回数の組はどれか。

  1. Aどちらも45回
  2. B10回と100回
  3. C9回と45回
答えと解説を見る

正解:C. 9回と45回

昇順に並んでいれば、取り出した値は左隣と1回比べるだけで位置が決まるので、9個の要素で合計9回です。降順なら、i 番目に取り出す値は左にある i 個すべてと比べるので、1 + 2 + … + 9 = 45回になります。このように挿入ソートは、最良 O(n)、最悪 O(n²) と入力によって大きく変わり、ほぼ整列済みのデータには非常に速いという特徴があります。この性質を活かし、間隔を空けた要素どうしで先に挿入ソートを行うのがシェルソートで、Timsort なども短い区間に挿入ソートを使います。

  • A. 比較が常に45回になるのは選択ソートです。挿入ソートは入力の並びで回数が変わります。
  • B. 要素数の10や、10² の100はそのまま比較の回数にはなりません。
  • C. 正しい。昇順なら各要素1回ずつで9回、降順なら 1 + 2 + … + 9 = 45回です。
この分野を解く 分野ページへ

関連する計算ツール

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

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

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

  1. 最悪の場合でも計算量が O(n log n) で、作業用の配列などの追加の記憶領域をほとんど使わずに並べ替えられるソートはどれか。
  2. (名前, 点数) のデータ (A, 80)、(B, 70)、(C, 80)、(D, 70) がこの順に並んでいる。点数の昇順に安定ソートで並べ替えたときの名前の順はどれか。
  3. クイックソートの計算量が O(n²) になる典型的な場合はどれか。
  4. マージソートで、昇順に整列済みの2つの列 1, 4, 7, 9 と 2, 3, 8, 10 を、先頭どうしを比べて小さい方を出力することを繰り返して1つの列にまとめる(マージする)。片方の列が空になったら、残りは比べずにそのまま出力する。比較の回数は何回か。
  5. 二分ヒープを、根を a[0] とする配列 a[0], a[1], a[2], … に、上の段から順に左から詰めて格納する。a[4] の子と親はどれか。