平成28年度 III-5

科目: 専門科目 / 分野: 情報工学部門 / 年度: 平成28年度

III-5 問題画像

出典:公益社団法人 日本技術士会「技術士第一次試験 過去問題」

データ数nの配列をソートするアルゴリズムで、時間計算量がO(n log n)となる場合として最も適切なものを選ぶ問題。マージソートの最悪計算時間はO(n log n)。

解説

この問題で問われていること

代表的なソートアルゴリズムの、最良・平均・最悪の時間計算量を比較する問題。

解き方

① 計算量: マージソート=最悪でもO(n log n)、クイックソート=平均O(n log n)・最悪O(n²)、挿入ソート=最良O(n)、選択ソート=常にO(n²)
② 「最悪でもO(n log n)」はマージソート
③ ②

正解が正しい理由

マージソートは、配列を2分割して再帰的にソートし、併合する。分割の深さがlog n、各段階の併合がO(n)なので、最悪の場合でもO(n log n)である。したがって②が最も適切である。

各選択肢について

覚えるべきポイント

O(n log n)で安定なのはマージソート(最悪でも)。クイックソートは平均O(n log n)、最悪O(n^2)。単純な挿入(最悪)・バブル・選択ソートは、O(n^2)。

キーワード: ソート、計算量、マージソート、クイックソート、シェルソート、単純挿入ソート、選択ソート、情報工学部門

出題履歴

類題(同じ論点の別問題)