基本情報シリーズ☆第二回~アルゴリズム・計算量~ | SPECIAL ONE ~KNIGHT OF FIRE~

基本情報シリーズ☆第二回~アルゴリズム・計算量~

今日はアルゴリズムの問題に引っかかった。
基本的なアルゴリズムは覚えとく必要あり。ということで,一通り復習。

◎探索
 ①線形探索:N個の要素を先頭から1個ずつチェック
         最大N回チェック。O(N)
 ②2分探索:N個の要素(ソート済み)の中央の値を比較
         その後,要素の左半分or右半分の中央の
値を比較
。以降繰り返し。
         最大比較回数はlog_2_N+1回。O(log_2_N)

◎ソート
 ①バブルソート:隣り合う要素で大小比較し,必要に応じて
入れ替え。最大比較回数はN(N-1)/2回
           O(N^2)
 ②選択ソート:要素の中から最大値を選択し,要素の最後と
         入れ替え
。以降,最大値と最後から2番目
          ・・・と繰り返す。
         
最大比較回数はN(N-1)/2回。O(N^2)
 ③挿入ソート:ソート済み要素の後ろから順次比較,追加の
          位置を探して挿入。
         
 最大比較回数はN(N-1)/2回。O(N^2)
 ④クイックソート:要素の中から1個選抜し,選抜要素を軸に
          大小の
グループに分ける。それぞれの
          グループで同様に
グループ分割を実行
          (各グループの要素が1個に
なるまで
          繰り返し)。

           すべての要素が1個になることで,ソート完了。
           
最大比較回数はN(N-1)/2回。O(N^2)
           平均計算量はO(N log_N)
※以降は概念のみ
 ⑤マージソート:要素を1個になるまで分割し,要素を順次マージ。
 ⑥シェルソート:挿入ソート改良版。比較する要素の一定間隔
           空けて整列。以降,間隔を1ずつ小さくして
           整列し,最終的に間隔が1になり,挿入
           ソートの実行でソート完了。
 ⑦ヒープソート:ヒープの根の要素を取り出す(最大値)。残りの
          要素でヒープ再構築し,以降ループ。