アルゴリズムの時間複雑
大文字O()ビッグO記法と呼ばれるアルゴリズム具現化表記の時間の複雑さを取得します
大きい順Oの導出方法
すべての時定数のかつらを操作することにより得られた1つの置換基定数
機能の数では唯一の最高次の項を保持、変更後に実行する必要が
最上位のエントリが存在し、1でない場合は、除去および定数項を乗じました
私たちは、最終的な結果を取得する必要が大きすぎるO-ためであります
1「一定の順序
例:コードセグメントははるかに大きすぎるOであります
私nt sum = 0, n = 100;
printf(“I love you.com\n”);
printf(“I love you.com\n”); printf(“I love you.com\n”); printf(“I love you.com\n”); printf(“I love you.com\n”); printf(“I love you.com\n”); sum = (1+n)*n/2;
すべての定数を説明する第1の加算器は、O(1)
2》线性阶
int i , n = 100, sum = 0;
for( i=0; i < n; i++ ) { sum = sum + i; }
O(N)の時間複雑さ
の正方形の。3」の順序
int i, j, n = 100;
for( i=0; i < n; i++ )
{
for( j=0; j < n; j++ ) { printf(“I love FishC.com\n”); } }
O(N ^ 2)の時間計算量
ようにして得られた3つのネストされたループがある場合^ 3 Nである:まとめ。結果をまとめて、ループが実行サイクル数を乗じたループ本体の複雑さに等しい時間複雑性を有するであろう
int i, j, n = 100;
for( i=0; i < n; i++ )
{
for( j=i; j < n; j++ ) { printf(“I love FishC.com\n”); } }
I = N-1は、インナーループが一回実行されたときにループが......、N-1回実行されるので、実行の合計数はであるべきである:
N- +(N-1)+(N - 2)+ ... + 1 = N- (N + 1)/ 2
N-(N + 1)/ 2 = ^ N-2/2 + N / 2
大Oレイダーと我々は、これが除去されたn / 2であり、唯一のほとんどの項目を導出します。最高の最終的なO(N ^ 2)を得、定数項を乗じを除去し、第三。
N- +(N-1)+(N - 2)+ ... + 1 = N- (N + 1)/ 2
N-(N + 1)/ 2 = ^ N-2/2 + N / 2
大Oレイダーと我々は、これが除去されたn / 2であり、唯一のほとんどの項目を導出します。最高の最終的なO(N ^ 2)を得、定数項を乗じを除去し、第三。
オーダーの4」
int i = 1, n = 100;
while( i < n )
{
i = i * 2; }
すべての後、私は2 *、N Xを乗算することにより2がn以上であると仮定すると、距離により近いので、ループを終了します。
次いで、得られた2 ^ X = N、X =ログ(2)nは、サイクルタイムの複雑さがあるようにO(LOGN)。
この関数は、時間の複雑さの分析を与えるために
小型から大型までの時間の複雑さを得るために、一般的な時間のかかるを持っています
N!= 1 * 2 * 3 * 4 * ... * n(nは数字)
O(1)<O(LOGN)<O(N)<O(nlogn)<O(N ^ 2)<O(N ^ 3)<O(2 ^ N)<O(N!)<O(N ^ n)は
アルゴリズムは、スペースの複雑さを持っています
空間複雑度アルゴリズムは、時間計算アルゴリズムによって必要とされる利用可能な記憶スペースを有しており、nはあまりにも問題の大きさである空間的複雑計算S(N)= O(F(N))を取得するアルゴリズムは、F(n)はnは約ステートメントであります収納スペースは、機能を占領しました。
通常、あまりにも空間的複雑スペース要件を参照するために必要な時間を実行している時の複雑さを指し、