02_复杂度分析
说到底数据结构和算法本身解决的是“快”和“省”的问题,对应的分别是“时间复杂度”和“空间复杂度”。
复杂度分析是整个算法学习的精髓,只要掌握了它,数据结构和算法的内容基本上就掌握了一半。
为什么需要进行程序的复杂度分析
事前分析法:
在写程序之前,对问题进行性能分析,需要一个不用具体的测试数据来测试,就可以粗略地估计算法的执行效率的方法。在动手编码之前就考略到代码的运行性能,选取合适的数据结构与算法,进行优化。
大O复杂度表示法
算法的执行效率,初略的讲,就是算法代码执行的时间。
所有代码的执行时间T(n)与每行代码的执行次数f(n)成正比。即执行时间与执行次数的正比
公式:
T(n) = O(f(n))
这就是大O时间复杂度表示法。
注意:大O时间复杂度实际上并不具体表示代码真正的执行时间,而是代码执行时间随数据规模增长的变化趋势,所以,也叫做渐进时间复杂度,简称时间复杂度。
几种常见的时间复杂度实例分析
空间复杂度分析
空间复杂度:
全称渐进空间复杂度,表示算法的存储空间与数据规模之间的增长关系。即运行程序需要借助的额外空间
总结
标签:02,分析,数据结构,复杂度,算法,时间,执行 来源: https://www.cnblogs.com/l12138h/p/16392034.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。