基本的なアルゴリズム - 時間の複雑さとスペースの複雑さ

A.時間複雑 

定義は:一つの処理アルゴリズムでは、必要な実行時間は、一般的に発現O.

時間の複雑さを説明するための例として、以下の検索アルゴリズムを使用します

質問:指定された要素、出力インデックスを見つけるために、あなたに配列(ソート)を得ました。
方法の一つ:直接Anzhi問い合わせ

ボイド serach(int型、] [ int型 B、INT N)
{ 
   ためINT iは= 0、I <N; I ++ 
   { 
      場合([I] == B)COUT << I << ENDL。
   } 

}

ここで、nは配列の長さであり、我々はこのアプローチの時の複雑さが反復O(N)である見ることができます

方法2:バイナリ検索

ボイド Binary_Serach(int型、] [ int型 Bを、INT N)
{ 
    int型の中間、左= 0、右= N。
    ブールフラグ= 一方(左<= 右)
    { 
        半ば =(左+右)/ 2 もし([中間] == B){ 
            フラグ = 
            coutの <<半ば<< てendl; 
        } 
        場合([中間] < B)
        {  =ミッド+ 1を; 
        } 
        {  =半ば1 
        } 
    } 
    もし(フラグ== 
    { 
        COUT << " 没找到!" << ENDL。
    } 
    
}

バイナリサーチは、半分の方法を見つけるために採取された、すなわち2 X = N、Xが時間複雑です。O = X(ログ2 N-)

時間の複雑さは、プログラムの良い道かどうかを測定するために使用されます。

II。宇宙複雑

定義:入力と出力プログラムの宇宙の完全な除去が必要です。

一般的に、我々は、空間複雑さの大きさはO(N)であるかわからない一次元配列を宣言、可変空間の複雑さが一定の順序で宣言する。

我々は通常、アルゴリズムの作成プロセスに時間のためのスペースを使用します。

おすすめ

転載: www.cnblogs.com/zhang1568234/p/12061545.html