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 개의
}

시간 복잡도는 O (n)의주기가 알 수있는 N 시간이며, 프로그램의 시간 복잡도 수 산출 수단
추가 지시

1. 모든 첨가제 상수는 상수 (1)에 의해 모든 시간을 대체하는

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

오직 최고 차항을 유지 개정 된 수의 실행 기능 2.

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

3. 가장 높은 차수가 존재하는 1이 아닌 경우, 일정하고 삭제 된 항목을 곱하여

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

이 값을 제거 왜, 그림 참조

원래 시간의 수보다 큰 계산 된 양 사이 n은 1 차는 너무 크지 않고, 그리고 n은 경우 2이 2N 오도록 곡선은 커진다 2 + 1 3N + -> N (2)는 마지막 N으로 추정되는 두 가지 이유로, 3N + 1 수가 클수록 산출되기 때문에, 실질적으로 무시할 수있는 다른 유사한
일정한 순서 O (1)

기능 테스트 ($ N) {
$ 에코 N;
에코 $ N;
에코 $ N;
}

아무리 많은 $ N, 실행 만 세 번, 다음 시간 복잡도는 O (3), O로 촬영 (1)
선형 주문 O (N)

대 ($ I = 1; $ I <= $ N; $ I ++) {
$ 합계 + = $ i 개의
}

레벨 (리) 파티 순서 : 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과 동일하다 (a> 0, 및 1과 동일하지 않다)이면 번호 X를 X = 로건 붙이고, N (대수)의 다수의 기판으로 불린다. 경우, 수의 알려진베이스 번호, N은 실수라고합니다. [1]

반면 ($ N> = 1) {
$ $ N = N / 2이고;
}

실행 n 개의
. 1 1
2 2
. 3 (2)

법 :

첫 번째 3/4 시퀀스 제 2 시퀀스의
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))은, 프로그램 코드를 포함 공간 점유 공간이 세 측면의 점유 데이터 입력 및 보조 변수가 차지하는 공간. 일반적으로 표현 된 점근의 계산 복잡도와 시간 복잡도와 유사한 방식의 발현

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

공간 복잡도 계산

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

일종의 버블 다음은 $ 편곡 = [1,3,2,4,6,5]가 그것을 밖으로 정렬

원리 : 역순 교환하는 경우 인접한 두 숫자, 비교, 그렇지 않으면 교환
132,465

1 및 제 3 고정 비교
132,465을

도 2 및도 3을 다시 비교 교환
123,465

다시도 3 및도 4는 수정로 비교
123,465을

다시도 4 및도 6은 수정로 비교
123,465을

도 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