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)であるかわからない一次元配列を宣言、可変空間の複雑さが一定の順序で宣言する。
我々は通常、アルゴリズムの作成プロセスに時間のためのスペースを使用します。