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

計算量が O(n²) のプログラムで、データ数が1,000のときに処理時間が0.5秒だった。データ数を4,000にすると、処理時間はおよそ何秒になるか。

  1. A2秒
  2. B8秒
  3. C32秒
答えと解説を見る

正解:B. 8秒

O(n²) では処理時間がデータ数の2乗に比例するので、データ数が4倍になると処理時間は 4² = 16倍になり、0.5秒 × 16 = 8秒です。2秒はデータ数に比例する O(n) の場合、32秒は3乗に比例する O(n³) の場合(4³ = 64倍)の値です。実際には、データがキャッシュに入りきらなくなるなどの影響で、これより遅くなることもあります。

  • A. データ数に比例する O(n) なら4倍の2秒ですが、O(n²) では2乗で効きます。
  • B. 正しい。4倍のデータで 4² = 16倍になり、0.5 × 16 = 8秒です。
  • C. 4³ = 64倍とした O(n³) の場合の値です。
この分野を解く 分野ページへ

関連する計算ツール

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

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

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

  1. 異なる100個の値が入った配列から、先頭から順に1つずつ比べる線形探索で目的の値を探す。目的の値は必ず配列の中にあり、どの位置にある確率も等しいとき、比較の回数の平均はいくらか。
  2. 配列と比べたときの連結リスト(各要素が次の要素の位置を指すポインタを持つリスト)の特徴として正しいものはどれか。
  3. 空のスタックに対して、push 1、push 2、pop、push 3、push 4、pop、pop の順に操作した。pop で取り出された値を順に並べたものはどれか。
  4. 空のキューに A、B、C の順に要素を入れ、1つ取り出し、D を入れて1つ取り出し、E を入れて1つ取り出した。取り出された要素を順に並べたものはどれか。
  5. 逆ポーランド記法(後置記法)で書かれた式「3 4 + 2 * 5 −」を、数が来たらスタックに積み、演算子が来たら2つの値を取り出して計算し、結果を積む方法で評価した。結果はいくらか。ここで、演算子の左側の値は先に積まれた方の値とする。