数据结构note(二)
算法复杂度的一些简单实例
-
Algorithm01
1 | void Algorithm01(){ |
一共进行了三步,这是一个$\mathcal{O}(1)$的算法.
-
Algorithm02
1 | void Algorithm02(int n){ |
for循环的执行次数即为$n$,故复杂度为$\mathcal{O}(n)$.
-
Algorithm03
1 | void Algorithm03(int n){ |
可以看到,要想把while语句走完,根据判断条件和循环节,需要$log_2n$次,忽略声明变量的常数次复杂度,可得复杂度为$\mathcal{O}(\log_2n)$.
-
Algorithm04
1 | void Algorithm04(int n){ |
外循环$i=0$时,内循环执行了$n$次;$i=1$时,内循环执行$n-1$次……故循环共执行了$n+(n-1)+…+1=\frac{n(n+1)}{2}$次,取最高次项,复杂度为$\mathcal{O}(n^2)$.
-
Algorithm05
1 | void function05(int n){ |
在第二个函数里调用了function05函数,故在第二个函数中计算,有$1+n+n2+\frac{n(n+1)}{2}$次,也即复杂度为$\mathcal{O}(n2)$.