この記事書類アルゴリズムの複雑さのブロガー分析、いくつかの共通の複雑さ、および平均時間の複雑さ、最高の要約/複雑最悪の時間。
複雑性分析
アルゴリズムの複雑さについては、我々は通常の仮定、複雑な空間の分析に基づいて、時間の単位、およびように、私たちはコードの各行の実行時間が同じであると仮定し、ここで、ビッグOを表現するために、この時間を使用しています。上記のコードの最初の分析が、時間複雑さがループのための2つ続いて、2-4行3第6行の時間複雑さがnもあるが、時間複雑さのために最初のループは、nがループの内部のための時間の複雑さは、2 * N * Nです。合計時間の複雑さは、2 * N * N + 2 * N + 3と比較します。このように、アルゴリズムの時間複雑度は、O(2 * N * N + 2 * N + 3)です。分析の複雑さに関しては、ノートには3つのポイントがあります。
図1に示すように、
1 INT CAL(int型N){ 2 INTの和= 0 。 3 INT iが= 1 。 4 int型の J = 1 。 5 のための(; I <= N; ++ I){ 6 J = 1 。 7 のための(; J <= N; ++ J){ 8 和= I * +和J。 9 } 10 } 11 }
いくつかの一般的な複雑さ
一定の順序O(1)
int型、A = 0 ; int型 B = ; int型私は、
Oのオーダー(LOGN)
1 私は= 1 ; 2 一方、(I <= N){ 3 私* = 2 ; 4 }
2のX = n乗は、x = LOG2で得られたN個の時間複雑度係数が無視される場合、コード現在の時間複雑度はO(Nログ)であるOマークを表すことができ、最初に留意すべき場合異なる基板間のルールの数の計算はlog3n = log32 * log2n、お互いに変換することができるので、2行3に3は、依然として時間複雑度は、O(Nログ)であります
Oの線形順序(nlogn)
1 私は= 1 ; 2 J = 1 。 3 しばらく(I <= N){ 4 ながら(j <= N) 5 私* = 2 ; 6 }
O(M + N)
1つの int型の CAL(INT M、INT N){ 2 INT sum_1 = 0 。 3 INT iが= 1 。 4 のための(; I <M; ++ I){ 5 sum_1 = sum_1 + I。 6 } 7 INT sum_2 = 0 。 8 int型の J = 1 。 9 用(; J <N; ++ j)は{ 10 sum_2 = sum_2 + J。 11 } 12 リターン sum_1 + sum_2。 13 }
O(M * N)
1つの int型の CAL(INT M、INT N){ 2 INT sum_2 = 0 。 3 int型 J = 1は、私は= 1 ; 4 のための(; J <N ++ J){ 5 のための(; I <M; ++ I) 6 sum_2 = sum_2 + J。 7 }
第三に、最高/最悪、平均時間の複雑さ
1 // N-配列は、長さの配列を表し 2 INTの検索を(INT []配列は、INT n-は、INT X){ 3 INT Iは= 0 ; 4 INT POS = - 1 ; 5。 ため(; I <n-は、++ I) { 6 IF(配列[I] == X)POS = I; 7 } 8。 リターンPOS; 9 }
最高の時間の複雑さ
ベスト・ケースの時の複雑さは、このコードの最良の場合の実行時間の複雑さに、あります。一例として上記のコード、検索機能のためのコードは、アレイ内のデジタル焦点位置を見つけ、理想的な状況は、我々は数字の配列を見つける最初の位置である、時間複雑度はO(1)です。
最悪時間計算量
最悪の時間の複雑さは、このコードの最悪実行時間の複雑さに、あります。あるいは、上記のコードでは、例えば、最悪の場合には、我々は数が配列ではありません検索すると、あなたはO(n)は、この時のために、アレイ全体、アルゴリズムの時間の複雑さを横断する必要があります。
平均時間の複雑さ
平均時間計算アルゴリズムは、それぞれの場合を考慮することで、それぞれの場合の実行時間を加算した後、全ての可能な場合の数で割った、それは要素数の平均値を得ることができるが横断する必要があります。このコードの上記の分析の平均時間計算量の合計N + 1の場合は、(0〜N-1が見出さ又はnが見つかりません)我々は、アルゴリズム(1 + 2 + ...... + nの平均時間計算することを見ることができます + N)/ N + 1 = N (N + 3)/ [2(N + 1)]、 我々は、平均的な複雑さはO(N)で得ることができます。
平均時間の複雑さなどと同様に、時間の加重平均、各起こっ統計の確率がでてきます。確率論の加重平均であり、各ケースが発生する確率は加重平均時間計算量Oを得るために、1 /(1 + N)を乗算して平均時間複雑さに基づいて、1 /(1 + N)を超えています(1) 。