分類 | 低速アルゴリズム | 高速アルゴリズム =============================================================== 選択法 | 単純選択ソート | ヒープソート --------------------------------------------------------------- 挿入法 | 単純挿入ソート | シェルソート(注意*1) --------------------------------------------------------------- 交換法 | バブルソート | クイックソート | シェーカーソート | --------------------------------------------------------------- 併合法 | −−− | マージソート ---------------------------------------------------------------注意*1:シェルソートを高速アルゴリズムに分類したが、計算量はO(n^1.2)であることが知られている。
表1において低速、高速で分類しているが、アルゴリズムの速さとは実行に要する計算の手間である。理論計算機科学の分野では、この計算の手間を計算量(計算時間量)と呼び、アルゴリズムの計算量について多くの研究が行なわれている。この計算量はアルゴリズムの評価の第一の基準となっている。たとえ、どんなに簡単なアルゴリズムでも目的の結果が得られるまでに、何十年もかかってはまったく意味の無いものとなってしまう。
ソーティングアルゴリズムについて言うと、低速アルゴリズムはO(n^2)、高速アルゴリズムはO(nlogn)に分類できる。O(オーダーもしくはビッグオー)とは、計算量を評価するときの単位で、対象とするデータの数nに比例して計算の手間が多くなることを意味する。ソーティングアルゴリズムの場合は、比較演算あるいは交換演算の回数が対象データの数の2乗もしくはnlognに比例して多くなる。例えば対象データの数を100倍すると、高速アルゴリズムでは約664倍(100*log2(100))に、低速アルゴリズムでは10000倍(100*100)になる。
このように、データの数が多くなったときに与えたアルゴリズムが本当に有効なものなのかを知る手掛かりとして、計算量を評価することは重要なことである。一般にアルゴリズムの計算量を評価する方法として、
1.データの大きさに対する平均計算時間の増加率が小さいほどよい, 2.最悪ケースを考えた時のオーダーが小さいほどよい, 3.計算時間の分散が少ないほどよい,の順に評価することがよいとされている。