在实现算法的时候,通常会从两方面考虑算法的复杂度,即时间复杂度和空间复杂度 。顾名思义,时间复杂度用于度量算法的计算工作量,空间复杂度用于度量算法占用的内存空间 。
本文将从时间复杂度的概念出发,结合实际代码示例分析算法的时间复杂度 。
渐进时间复杂度时间复杂度是算法运算所消耗的时间,因为不同大小的输入数据,算法处理所要消耗的时间是不同的,因此评估一个算运行时间是比较困难的,所以通常关注的是时间频度,即算法运行计算操作的次数,记为T(n),其中n称为问题的规模 。
同样,因为n是一个变量,n发生变化时,时间频度T(n) 也在发生变化,我们称时间复杂度的极限情形称为算法的渐近时间复杂度,记为O(n),不包含函数的低阶和首项系数 。
我们以如下 例子来解释一下:
文章插图
如上例子中,我们根据代码上执行的平均时间假设,计算 run_time(n) 函数的时间复杂度,如下:
文章插图
上述时间复杂度计算公式T(n) ,是我们对函数 run_time(n) 进行的时间复杂度的估算 。当n 值非常大的时候,T(n)函数中常数项 time0 以及n的系数 (time1+time2+time3+time4) 对n的影响也可以忽略不计了,因此这里函数run_time(n) 的时间复杂度我们可以表示为 O(n) 。
因为我们计算的是极限状态下(如,n非常大)的时间复杂度,因此其中存在以下两种特性:
- 低阶项相对于高阶项产生的影响很小,可以忽略不计 。
- 最高项系数对最高项的影响也很小,可以忽略不计 。
1.只取最高阶项,去掉低阶项 。
【Python算法中的时间复杂度】2.去掉最高项的系数 。
3.针对常数阶,取时间复杂度为O(1) 。
推荐阅读
- docker中的容器安装PHP扩展件
- 网络中的以太网及MAC地址协议封装,一分钟了解下
- 绿茶减肥DIY方法介绍
- SVG在Web攻击中的应用
- 冬季出游时应该穿什么?旅途中的保养秘方
- 黑茶金花功效,黑茶中的金花发香特点
- 泊位停车练习中的几个专业术语
- 普洱中的霸王,老班章
- McAfee杀毒软件中的提权漏洞
- 十大数据挖掘算法及各自优势