アルゴリズムとプログラミング

基本情報技術者試験計算量」の問題

テクノロジ系アルゴリズムとプログラミング難易度:normal
要素数nの配列に対する二分探索の最悪計算量を表すものはどれか。
O(n)
O(n log n)
O(n^2)
O(log n)
正解
O(log n)

二分探索はソート済み配列の中央と比較し範囲を半分に絞る。範囲が1になるまでの分割回数は約log2 nなのでO(log n)が正しい。

?選択肢ごとの解説

ア ×O(n)は線形探索の計算量であり、先頭から順に全件比較する手法と取り違えている。
イ ×O(n log n)は効率的な比較ソート(マージソート等)の計算量であり、探索ではなく整列の量である。
ウ ×O(n^2)は単純なバブルソートや二重ループの量であり、二分探索の挙動とは無関係である。
エ ○二分探索はソート済み配列の中央と比較し範囲を半分に絞る。範囲が1になるまでの分割回数は約log2 nなのでO(log n)が正しい。

くわしく

二分探索の前提はデータがソート済みであること。1回の比較で候補が半減するため対数時間になる。線形探索O(n)との差は要素数が大きいほど顕著で、n=100万でも約20回で済む。

本番での押さえどころ

試験のコツ

『半分に絞る=log』『全部見る=n』『総当り二重=n^2』とパターンで即断する。

覚え方

半分・半分・半分…と折りたたむ回数がlog、と紙を折るイメージで覚える。

よくある誤り

ソートのコストと探索のコストを混同し、O(n log n)やO(n)を選んでしまう誤りが多い。探索単体の計算量を問われている点に注意する。

アルゴリズムとプログラミングの他の問題

この問題を、AIの8-ways解説つきで。

基本情報技術者試験の演習を、一問ごとに「なぜ」まで。まずは無料で。

無料ではじめる →

ukamiru 過去問 · 基本情報技術者試験 · fe-a3-0004

【基本情報技術者試験】計算量の問題 — 解答・解説|ukamiru 過去問