在我们现在常用的时间复杂度记法常用大O记法来表示。另外在进行算法分析时,我们用语句被执行次数做关于问题规模的函数T(n)。一般情况下,随着n的不断增大,T(n)增长最慢的函数算法,我们成为最优算法。
在非官方中,我们给几种常见的算法复杂度命名:
1: 常数阶,example:O(1),执行了1次
2:线性阶,such as:O(n),执行了n次,(本人感觉就是关于一阶方程).
3:n方阶,like this:O(n^2),通常是关系到嵌套循环,这个就需要数学的数列的一些知识加以理解了.举个代码:
int i=0,j=0;
for(i=0;i<n;i++){
for(j=i;j<n;j++){}}
我们由这个代码可以知晓,它执行了n+n-1+n-2......=n^2/2+n/2,当n趋近于无穷时,可以认为就是等于n^2的复杂度.
4:对数方阶:我们用O(logn)来表示,代码举例
int count=1,i;
for(i=0;count<n;i++)
{count=count*2}
关于要cout乘以多少个2才能退出循环的代码,时间复杂度用O(logn)来表示.
小白第一天学数据结构,若有不足请加以理解,望指出