数据结构与算法初学者教程:测量复杂度
一旦理解了时间复杂度的概念,就可以基于真实的代码来测量它。以下是一些常用的时间复杂度表示形式的示例。如何衡量最重要的是观察程序的循环结构。每个循环结构代表循环中指令的执行n次,而其他指令通常代表单行代码。程序执行次数的差异实际上很小。没关系,很快就全部完成了。 ? printf("你好世界"); //执行一次 返回 0; //执行一次}
对于上面的代码来说,执行了两次,所以O(2)=O(1)。我们可以称之为时间复杂度 O(1) 或常数时间复杂度? n=10000,ans=; //运行n次 ans+=i; //执行一次 } 返回 0; //执行一次}
对于上面的代码,我们总共执行了n*1+2次,即O(n*1+2)。由上式可知,其复杂度为O(n),或者称为线性序列时间。复杂。
c)O(n^2)
| 12345678910 | #includeintmain(){❃❃ n= 10000, ans= 0; //运行一次 for(int i) //运行 n次/运行n次 ans+=j; 0; //执行一次} |
对于上面的代码,我们总共执行了n*n*1+2次,即O(n*n*1+2)。由上式可知,复杂度为O(n^2),或者称为二次阶时间。复杂度,除了O(n^3)级时间复杂度外,由三层嵌套循环结构组成,称为立方时间复杂度。随着嵌套的增加,时间复杂度甚至达到 O(n!) 级。 ,称为层次时间复杂度,但是这种复杂度非常高,程序运行速度非常慢。
d)O(登录)
| 12345678 | #includeint main(){❃❃ i=1, n = 10000 ; //运行一次 while(i |
版权声明
本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。
code前端网