本篇内容将数据结构的时间复杂度、空间复杂度相关知识进行简单的梳理:
章节内容
- 时间复杂度
- 空间复杂度
什么时算法效率?
- 算法效率分为两种:第一种是时间效率,第二种是空间效率。时间效率被称为时间复杂度,而空间效率被称作空间复杂度,时间复杂度主要衡量的是一个算法的运行速度,而空间复杂度主要衡量一个算法所需要的额外空间。
1. 时间复杂度
- 算法中的基本操作的执行次数,为算法的时间复杂度,实际中计算时间复杂度时,并不一定要计算精确的执行次数,而只需要大概执行次数,这里介绍一种大O的渐进表示法。大O符号(Big O notation):是用于描述函数渐进行为的数学符号。
【推导大O阶方法】
- 用常数1取代运行时间中的所有加法常数;
- 在修改后的运行次数函数中,只保留最高阶项;
- 如果最高阶项存在且不是1,则去除与这个项目相乘的常数,得到的结果就是大O阶。
【时间复杂度的最好、平均和最坏情况】
- 最坏情况:任意输入规模的最大运行次数(上界);
- 平均情况:任意输入规模的期望运行次数;
- 最好情况:任意输入规模的最小运行次数(下界)。
2. 空间复杂度
- 空间复杂度是对一个算法在运行过程中临时占用存储空间大小的量度,是变量的个数,而不是程序占用了多少bytes的空间,计算也使用大O渐进表示法。
附:一篇关于算法时间复杂度、空间复杂度的文章 https://zhuanlan.zhihu.com/p/32267149