ソートとは

与えられたデータを決められた順で並べ替えること

 

選択ソート

  1. データの中から最大のデータを見つける
  2. そのデータを除外する
  3. データがなくなるまで1.2を繰り返す
つまり最大のデータを除外していき、除外した順にならべると大きいデータ順に並んでいる
データがn個だとすると、データを端から端まで探索する作業をn回することになるので
時間計算量はO(n^2)
ソートアルゴリズムとしてはよくない
 
挿入ソート
  1. 与えられたデータのうちソートされたデータを左、ソートされていないデータを右に分ける
  2. 右側の最初のデータを左側のデータと右から左に比較していき挿入する場所を探す
  3. 右側の最初のデータを左側に挿入する
  4. 1~3を繰り返す
これの最も早い実行時間は与えられたデータがソート済みのときO(n)
逆に最も遅い実行時間は与えられたデータがソートする順とは反対に並べられているときO(n^2)
平均時間計算量はO(n^2)
平均は選択ソートと同じだが、データが並べられているときやデータが小さいときは有効
 
ヒープソート
ヒープとは
優先順位を数値として表し、優先順位の高い(数値の大きい)データから出力できるデータ構造
データは2分木で表されている
 
ヒープソートは
  1. 入力データを用いてヒープのルールに従って2分木を作成する
  2. 根から順に取り出し並べる
時間計算量はO(nlogn)(説明は省略)
そこまで高速ではない、実用的ではない
 
クイックソート
  1. データが1つならばアルゴリズム終了
  2. データの中から基準値を決める
  3. 各データを基準値と比較して、すべてのデータを「基準値より小さいデータ」と「基準値より大きいデータ」の集合に分割する
  4. 新しくできた2つの集合で1~3を行う
集合が1つのデータで形成されるまで繰り返すことでデータが昇順に並び替えられる
 
 
 
平均時間計算量はデータがn個のときO(nlogn)(説明はめんどくさいので省略)
コンピュータで実装する場合は高速
多くの言語で組み込まれているらしいので実装する必要なし