李哈哈的数据结构和算法笔记【part 2:时间复杂度和空间复杂度】

李哈哈的数据结构和算法笔记【part 2:时间复杂度和空间复杂度】

算法效率的度量方法

1.事后统计方法
缺点:需要事先编号测试程序,且不同测试环境差别很大。
2.事前分析估算方法
定义:在计算机程序编写前,依据统计方法对算法进行估算。

函数渐进增长

存在正整数N,若n>N时,f(n)一直大于g(n),则称f的渐进增长快于g。

  • 可以省略加法常数,如3n+2≈3n
  • 与最高次项相乘的常数并不重要,可以省略

**结论:**判断算法效率,函数中常数和其他次要项常常可以忽略,而更应关注主项(最高次项)的阶数。

算法的时间复杂度

指程序对运行时间的需求。
大O记法:

  1. 用常数1取代运行实践中的所有加法常数
  2. 修改后的运行次数函数中,只保留最高阶项
  3. 若最高阶项存在且不是1,去除与这个像相乘的常数
  4. 得到的最后结果就是大O阶

有几种典型阶数:常数阶 线性阶 平方阶 立方阶 对数阶 指数阶
阶数比较大小:
1 < logn < n < nlogn < n方 < n立方 < 2^n < n! < n的n次方

最坏情况和平均情况

一个程序,我们会做出它运行的最坏情况,用来衡量其性能。
平均情况也是一种衡量方式,但前者更常用。

算法的空间复杂度

指的是算法所需要的空间大小。
编程时可以用空间换取时间。
比如查询闰年,可以用计算实现,也可以通过建立数组,采用查询的方式。
二者孰优孰劣要根据实际情况来判断。

猜你喜欢

转载自blog.csdn.net/qq_41883714/article/details/109498844