【本节目标】
- 什么时时间复杂度和空间复杂度?
- 如何计算常见算法的时间复杂度和空间复杂度?
- 例题练习
参考视频:
b站王卓老师《数据结构与算法》
比特航哥“数据结构训练营”
目录
【引言】
算法的特性
1. 有穷性:一个算法必须在执行有穷步之后结束。且每一步都在有穷时间内完成。
2. 确定性:算法中的每一条指令必须由确切的含义,即在任何条件下,只有唯一的一条执行路径,即对于 相同的属兔只能得到相同的输出。
3. 可行性:算法是可执行的,算法描述的操作可以通过已经实现的基本操作执行有限次来实现。
4. 输入:一个算法由零个或多个输入。
5. 输出:一个算法由一个或多个输出。
算法的设计要求
1. 正确性
2. 可读性
3. 健壮性:指当输入非法数据时,算法恰当的作出反应或进行相应处理,而不是产生莫名其妙的输出结果。
处理出错的方法,不应是中断程序的执行,而应是返回一个表示错误或错误性质的值,以便在更高的抽象层次上进行处理。
4. 高效性:花费尽量少的时间和尽量低的存储空间。
对于同一个问题,可以有许多不同的算法,究竟如何来评价这些算法的优劣程度?——算法分析
算法分析,主要考虑算法的效率,通过算法的效率高低来评判不同算法的优劣程度。
算法效率
- 算法效率分为两种:第一种是时间效率,第二种是空间效率。
- 时间效率被称为时间复杂度;而空间效率被称作空间复杂度。
- 时间复杂度主要衡量的是一个算法的运行速度,即算法所消耗的时间;而空间复杂度主要衡量一个算法所需要的额外空间。
在计算机发展早期,计算机的存储容量很小,所以对空间复杂度很是在乎。但是经过计算机行业的迅速发展,计算机的存储容量已经达到了一个很高的程度,所以我们如今已经不需要特别关注一个算法的空间复杂度,而更关注于算法的时间复杂度。
1.【时间复杂度】
1.1时间复杂度的概念
在计算机科学中,算法的时间复杂度是一个函数,它定量描述了该计算机的运行时间。一个算法执行所耗费的时间,从理论上说,是不能算出来的,只有你把你的程序放在机器上跑起来,才能知道。但是我们需要每个算法都上机测试吗?是可以都上机测试,但是很麻烦,所以才有了时间复杂度的分析方式。一个算法所花费的时间与其中语句的执行次数成比例,算法中的基本操作的执行次数,为算法的时间复杂度。
1.2算法时间效率的度量:
算法时间效率可以用依据算法编制的程序在计算机上执行所消耗的时间来度量。
两种度量方法:
1. 事后统计:将算法实现,测算其时间和空间开销。
缺点:编写程序实现算法将花费较多的时间和精力;所得实验结果依赖于计算机的软硬件等环境因素,掩盖算法本身优劣。
2. 事前分析:对算法所消耗资源的一种估算方法。
算法事前分析:
一个算法运行时间是指一个算法在计算机上运行所消耗的时间大致可以等于计算机执行一种简单的操作(如赋值、比较、移动等)所需的时间与算法中进行的简单操作次数的乘积。
算法运行时间 = 一个简单操作所需的时间x简单操作的次数也即算法中每条语句的执行时间总和。
算法运行时间=每条语句的执行次数之和(语句频度)x该语句执行一次所需的时间.

本文介绍了算法的时间复杂度和空间复杂度的概念,强调了时间复杂度在现代计算机科学中的重要性。通过实例分析了如何计算和推导算法的时间复杂度,并提供了常见时间复杂度的比较。此外,还简要提及了空间复杂度,指出空间复杂度在当今计算环境中相对次要。文章适合想要了解算法效率分析的读者。
&spm=1001.2101.3001.5002&articleId=123462151&d=1&t=3&u=8a38eb785e174eb9aab8f489872964ca)
3万+

被折叠的 条评论
为什么被折叠?



