PHPのアルゴリズムの複雑さと時間の複雑さと空間の複雑さ

アルゴリズムの複雑さは、時間の複雑さと空間の複雑さに分割されています。
その効果:
必要なアルゴリズム手段が実行する計算労力の時間複雑性は、
空間的複雑さは、アルゴリズムのために必要な実行メモリ空間を指します。
(コンピュータリソースの数は、アルゴリズムの複雑さは、アルゴリズムを実行している、反射必要に応じて、最も重要なコンピュータリソースは、時間と空間(すなわち、時間と空間の複雑さに)資源、複雑に登録されています)。

簡単に言えば、

時間の複雑さは、文が実行された回数を指し、
空間的複雑収納スペースを参照するには、アルゴリズムによって占められ

時間複雑

执行算法所需的计算工作量。一般来说,计算机算法是问题规模n的函数f(n),算法的时间复杂度也因此记做T(n)=O(f(n));
常见时间复杂度有:常数阶、线性阶、平方阶、立方阶、对数阶、nlog2n阶、指数阶
效率:O(1) > O(log2n)> o(n)> o(nlog2n) > o(n^2) > o(n^3) > o(2^n) > o(n!) > o(n^n) 

他の概念

最坏情况:最坏情况时的运行时间,一种保证。如果没有特别说明,说的时间复杂度即为最坏情况的时间复杂度

計算の時間複雑

例:計算1 + 2 + 3 + ... + N、および

$和= 0

用($ i = 1; $ I <= $ N、$ I ++){
$和+ = $ Iを
}

サイクルを見ることができるN回、時間複雑度はO(N)であり、プログラムの時間計算量は多くの計算された
追加の命令を

1.すべての添加剤定数は定数1ですべての時間を交換します

比如上面的例子中,不管n为多少,计算次数都是3,那么时间复杂度为O(1),而不是O(3) 

唯一の最高次の項を保持改訂番号でRun関数で2、

比如运算的次数为n^2+1,那么为时间复杂度为o(n^2) 

3.最上位に存在し、1でない場合は、一定の除去項目を乗じ

2n^2+3n+1 ->n^2

なぜ、図を参照してください、これらの値を削除

元の時間の数との間の差として、より大きなN 1、計算量が大きすぎず、N場合カーブが大きくなるので、これを2Nである2 > N - 3N +と2 + 1 2が最後のn個であると推定されます 2つの理由、3N + 1は、数が大きくなるように算出されるので、実質的に無視できる程度で、他の類似の
一定の順序O(1)

機能テスト($ N){
エコー$ N。
エコー$ N;
エコー$ N;
}

その後、時間計算量がO(3)、O(1)としているどのくらいの$ nは、3回だけを実行し、どんなに
オーダーO(n)の線形

用($ i = 1; $ I <= $ N、$ I ++){
$和+ = $ Iを
}

レベル(Li)と党順:O(N- 2)/ O(N- 3)。

= 0 $の合計。
($ i = 1; $ I <= $ N、$ I ++)のための{
($ J = 1; $ J <$ N、$のJ ++)のために{
$和+ = $ J
}
}

两次循环,里面循环执行了n次,外层循环也执行了n次,所以时间复杂度为O(n^2),立方阶一样

正方形の特別な順序:O(N 2 / N-2 + / 2) - > O(N 2)

(){用
のための(){
... -----------> N ^ 2
}
}
+
(){ため
------------> N
}

                              +

エコー$ A + $ B --------------> 1

所以整体上计算次数为n^2+n+1,我们算时间复杂度为O(n^2) 

オーダー:O(log2n)

xの電力がNに等しい(> 0、及び1に等しくない)場合、番号xをx =ローガンを付し、N(対数)の数の基板と呼ばれます。ここで、多数の公知の塩基数、Nは実数と呼ばれています。[1]

一方、($ N> = 1){
$ N = $ N / 2。
}

nは実行回数
。1 1
2 2
3 2

法律:

最初のシーケンス3/4第五の第二の配列
20 ---------> 10 ----------> 5> 2.5 -------- --- ----> 1
NN / N-2/2 / N 2/2/2 / N 2/2/2 / ...

全て法:N /(2 ^ m)は = 1、 時間複雑度はO(LOGN)またはO(log2n)であるので、我々は、Mを計算する必要がある、N = 2 ^ Mに変換され、M = log2nの星の
空間的複雑

アルゴリズムは、メモリ容量を消費する必要があります。すなわち、S(N)= O(F(N))を含むプログラム・コード・スペースが占有空間は、これらの3つの側面によって占有データ入力変数および補助変数スペースによって占め。一般に発現の漸近複雑で時間の複雑同様の計算および発現、

关于O(1)的问题, O(1)是说数据规模和临时变量数目无关,并不是说仅仅定义一个临时变量。举例:无论数据规模多大,我都定义100个变量,这就叫做数据规模和临时变量数目无关。就是说空间复杂度是O(1)。

宇宙複雑計算

举例:冒泡排序的元素交换,空间复杂度O(1)
冒泡排序就是两两交换,中间设置临时变量存储交换的值,不管要交换的数据多大,临时变量始终为固定数量

バブルソート:$編曲= [1,3,2,4,6,5]、それを整理します

原理:逆の順序を入れ替えた場合に隣接する二つの数字は、比較され、そうでなければ交換
132465

図1及び図3は、第1の固定比較され
132465を

図2及び図3を再び比較交換
123465

再び図3及び図4は、固定て比較
123465を

再び図4及び図6は、固定て比較
123465を

図5および図6を再び比較交換
123456

用($ i = 0; $ I <= $ N、$ I ++){
($ J = 0; $ J <= $ N; $のJ ++)のために{

if($arr[$j]>$arr[$j+1]){
   $tmp=$arr[$j]; 
  $arr[$j]=$arr[$j+1];
  $arr[$j+1]=$tmp;
}
}

}

このため、時間複雑度はO(N ^ 2)であり、空間的な複雑さはO(1)であり、
一般的ソートアルゴリズム

冒泡排序、直接插入排序、希尔排序、选择排序、快速排序、对排序、归并排序

一般的な検索アルゴリズム

二分查找、顺序查找

拡張:緩やかな成長関数

https://blog.csdn.net/raylee2 ...

おすすめ

転載: www.cnblogs.com/djwhome/p/12554474.html
おすすめ