ホーム » スタッフ » 斉藤徹 » オーダ記法

2011年4月
« 3月   5月 »
 12
3456789
10111213141516
17181920212223
24252627282930

最近の投稿(電子情報)

アーカイブ

カテゴリー

オーダ記法

先週の最大選択法の処理時間の分析を、解説する。 具体的な説明は、先週の資料に記載したのでそちらを参照。 この後、2分探索法のブログラムを示し、オーダ記法の説明を行う。

2分探索法の分析

int data[ N ] ;     // dataはあらかじめ昇順にソート
int key = 探す値 ;
int L = 0 , R = N ; // [0,N)
while( R-L > 1 ) {
   int M = (L + R) / 2 ; // [L,M) , M , [M+1,R)
   if ( data[ M ] == key )
      break ;
   else if ( data[ M ] > key )
      R = M ;     // [L,M)
   else
      L = M+1 ;   // [M+1,R)
}

このプログラムでは、ループ1回につき、対象データ件数が約半分になる。 よって、m回ループをすれば、対象データ件数は、 となり、 データが見つからない最悪ケースでは、対象データ件数が1件になるまで繰り返す。 よって、 となり、 処理時間は、以下のように示される。

オーダ記法

処理速度の見積もりでは、単純ループはNに比例、 最大選択法では、に比例、 2分探索法では、 に比例ということが、アルゴリズムの処理時間の分析では重要となる。 そこで、「Nについてのどのような式に比例するのか?」を、オーダ記法で表す。 単純ループでは、、 最大選択法では、、 2分探索法では、といったように表記する。