ソート wikipedia|無料辞書
ソート(
sort)は、
データの集合を一定の規則に従って並べることである。日本語では
整列(せいれつ)と訳される。(以前は
分類と訳していた時もあったが、この訳は間違いであり、もう使われていない。)
主に
コンピュータソフトにおける
リストに表示するデータに対し、
全順序関係を定義して一列に並べることを指す。また、単に「ソート」といった場合、値の小さい順に並べる
昇順(しょうじゅん/
ascending order)を指すことが多い。また、その反対に値を大きい順から並べることを
降順(こうじゅん/
descending order)という。
◆ 概要
効率的なソートは、ソート済みのデータを必要とする他のアルゴリズム(
探索や
マージ)の最適化にとっても重要である。また、ソートされたデータの方が人間にとっても読みやすい。形式的には、その出力は以下の2つの条件を満たさなければならない。
# 設定された順序(大抵
昇順or
降順)に対して、逆になるような順序の出力があってはならない。
# 出力は入力の並べ替えでなければならない。
◆ ソートアルゴリズムの分類
計算機科学では、ソートアルゴリズムを次のように分類する。
・ 入力されるリストの項目数(
n)に基づいた
計算量による分類。典型的なソートアルゴリズムでは、最善で
O(
n log
n)、最悪で Ω(
n2) である。理想は O(
n) である。抽象キーの比較演算のみを使うソートアルゴリズムでは、最悪で Ω(
n log
n) の比較が必要となる。
・ メモリ使用量(およびその他の計算資源の使用量)による分類。一部のソートアルゴリズムは
In-placeであるため、入力リストの格納域以外には O(1) または O(log n) の領域しか必要としない。これを
内部ソートと呼ぶ。一方、他のアルゴリズムではデータを一時的に記憶しておく領域が必要である。これを
外部ソートと呼ぶ。
・ 再帰の有無による分類。一部のアルゴリズムは再帰が必須だったり、再帰不可能だったりするが、それ以外はどちらでも実装可能である(例えばマージソート)。
・
比較ソートか否か。比較ソートでは、2つの個々の項目を比較演算で大小判定することを基本とする。比較ソートには後述するが存在する。
・ 汎用手法による分類。挿入、交換、選択、マージなどがある。交換ソートにはバブルソートやクイックソートが含まれる。選択ソートにはシェーカーソートやヒープソートが含まれる。
◆ソートアルゴリズムの一覧
配列に格納されたn個のデータをソートする場合について、各アルゴリズムの性能を示す。
以下の表で、
n はソートすべきデータ要素数である。平均実行時間と最悪実行時間は
時間計算量を示している。このとき、ソートキーの長さは一定と仮定しており、比較や交換といった操作は定数時間で行われるとする。メモリ使用量は、入力データの格納域以外に必要となる領域を示している。これらは、いずれも
比較ソートである。