Complexity
時間複雑度バー
演算と回数を計算するのに時間ではなく、時間の複雑さと呼ばれます.
big−o記号では、最長時間または大量の空間を必要とする場合を表す.
スペースマークはあまり使いにくいそうです.
Big-O-Notation:タグが最悪のアルゴリズムの数字は無視されます.(2 nの場合はnで表す) の低次数が消去されます.(n^2+2 n+3をn^2と表記します.)
O(n^2) : Quadratic
二重複文では、対応する演算回数がn*nの場合、O(n^2)と表記する. 演算の回数は幾何級数的に増加した.そのため、1回増加するごとに2倍以上増加します.時間がかかります. 例えば九九乗算、行列演算などである.
これは、演算回数に応じて用いられるマーキング法である.O(n)とマークされ、文の演算を繰り返すと、時間の複雑さは線形図に従います. 出力1−10での時間的複雑度はO(n)である.
アルゴリズムの実行時間は、Nが2に分けられる回数に比例する(Nはここでは高い、低い). 演算で、半分に分かれた演算をO(logn)マーキング法と呼ぶ. バイナリsearchを例に挙げます.下図に示すように、binary searchを使用して6を検索する場合は、まず1から10の中間値を検索し、検索する値(6)より大きいかどうかを決定します.確認した結果は6より小さいので、5以下で検索する必要はありません.次に、6~10の間に中間値を見つけて比較します.中間値は8で8未満なので、8以上見る必要はありません.残りの数は六七で、探している数に比べて探せば終わりです.このように3回の演算を経て,時間が大幅に減少した.O(n)で記述したアルゴリズムに比べて時間がかなり短縮されていることが分かる.
定数は、データ量が大きくても一度だけ計算される時間的複雑さを表す. の例では、配列内で特定のインデックスを問合せたい場合、時間的複雑度はO(1)です. 時間複雑度の高速ソート
O(1)>O(logn)>O(n)>O(n^2)>O(2^n)の順で時間の複雑さが長い.
演算と回数を計算するのに時間ではなく、時間の複雑さと呼ばれます.
big−o記号では、最長時間または大量の空間を必要とする場合を表す.
スペースマークはあまり使いにくいそうです.
- Time Complexity
Big-O-Notation:タグが最悪のアルゴリズム
象限の例
for(i=0; i < N; i++)
{
for(j=0; j < N;j++)
{
statement;
}
}
O(n) : Linear Linearの例
これは、演算回数
for(i=0; i < N; i++)
{
statement;
}
O(log n): Logarithmic Logarithmic
while(low <= high)
{
mid = (low + high) / 2;
if (target < list[mid])
high = mid - 1;
else if (target > list[mid])
low = mid + 1;
else break;
}
O(1) : constant O(1)>O(logn)>O(n)>O(n^2)>O(2^n)の順で時間の複雑さが長い.
Reference
この問題について(Complexity), 我々は、より多くの情報をここで見つけました https://velog.io/@bsy/Complexityテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol