整列(ソート)
複数のデータを小さい順(昇順)または大きい順(降順)に並べ替える処理である。
クイックソート*安定ソートではない
基準値(ピボット)を決めて、それより大きな値を集めた区分と小さな値を集めた区分とに分類する。次にそれぞれの区分の中で同じ処理を繰り返す方法である。
再帰を使ってプログラミングすることになる。
基準値を中央値、つまり大きな区分の値の数と小さい区分の値の数がほぼ同じ数になるような値にできれば
計算量
O(logn)
最悪の場合、例えば最小値を基準値にしてしまうような場合
計算量
O(n2)
シェルソート*安定ソートではない
ある間隔だけ離れたデータを取り出して整列し、その間隔を徐々に狭くしていく方法である。例えば、最初は七個おきのデータを、次に三個おきのデータを、最後に全部のデータで整列する。挿入法の改良版といえる。計算量は何個おきに操作するかによっても違ってくるのですが、平均して
計算量
O(n125)
ヒープソート*安定ソートである
木構造のヒープは全てのノードのうち最大(または最小)のものが根にきる。それを取り出し、残りのノードでヒープの再構成をする。そしてまた根を取り出す。これを繰り返す。選択法の改良版といえる。
計算量
O(nlogn)
マージソート*安定ソートである
整列済みの二つの配列を、一つの配列に合併(マージ)する処理を繰り返す方法である。
計算量
O(nlogn)