【数据结构】--时间和空间复杂度

1. 如何衡量一个算法的好坏

两个标准来衡量:1. 时间复杂度 2. 空间复杂度

2. 算法效率

算法效率分析分为两种:第一种是时间效率,第二种是空间效率。时间效率被称为时间复杂度,而空间效率被称作空间复杂度。时间复杂度主要衡量的是一个算法的运行速度,而空间复杂度主要衡量一个算法所需要的额外空间,在计算机发展的早期,计算机的存储容量很小。所以对空间复杂度很是在乎。但是经过计算机行业的迅速发展,计算机的存储容量已经达到了很高的程度。所以我们如今已经不需要再特别关注一个算法的空间复杂度。

当今衡量一个算法的好坏,主要是衡量其运行速度,时间速度。

不能单纯的根据算法运行的时间来衡量这个算法的好坏,此时大多数情况下时间取决于硬件条件。

3. 时间复杂度

3.1 时间复杂度的概念

一个算法所花费的时间与其中语句的执行次数成正比例,算法中的基本操作的执行次数,为算法的时间复杂度。

3.2 大O的渐进表示法

实际中我们计算时间复杂度时,我们其实并不一定要计算精确的执行次数,而只需要大概执行次数 ,那么这里我们使用大O的渐进表示法

大O符号(Big O notation):是用于描述函数渐进行为的数学符号。

3.3 推导大O阶方法

1、用常数1取代运行时间中的所有加法常数。

2、在修改后的运行次数函数中,只保留最高阶项。

3、如果最高阶项存在且不是1,则去除与这个项目相乘的常数。

得到的结果就是大O阶。

使用大O的渐进表示法以后,Func1的时间复杂度为:

通过上面我们会发现大O的渐进表示法去掉了那些对结果影响不大的项,简洁明了的表示出了执行次数。

平时所说的时间复杂度或者空间复杂度都是指在最坏情况下。

3.4 常见时间复杂度计算举例

求复杂度一定要结合算法的思想。







4. 空间复杂度

空间复杂度是对一个算法在运行过程中临时占用存储空间大小的量度 。空间复杂度不是程序占用了多少bytes的空间,因为这个也没太大意义,所以空间复杂度算的是变量的个数。空间复杂度计算规则基本跟时间复杂度类似,也使用大O渐进表示法。

以后,我们常遇到的复杂度有O(1 < O(log N) < O(N) < O(N*log N) < O(N^2)

相关推荐
csdn_aspnet1 天前
C# (QuickSort using Random Pivoting)使用随机枢轴的快速排序
数据结构·算法·c#·排序算法
广师大-Wzx1 天前
一篇文章看懂MySQL数据库(下)
java·开发语言·数据结构·数据库·windows·python·mysql
paeamecium1 天前
【PAT甲级真题】- Cars on Campus (30)
数据结构·c++·算法·pat考试·pat
会编程的土豆1 天前
01背包与完全背包详解
开发语言·数据结构·c++·算法
汀、人工智能1 天前
[特殊字符] 第86课:最大正方形
数据结构·算法·数据库架构·图论·bfs·最大正方形
jinyishu_1 天前
几道链表经典算法题
c语言·数据结构·算法·链表
sparEE1 天前
进阶排序算法:快速排序
数据结构·算法·排序算法
算法鑫探1 天前
C语言入门:a和b 比大小
c语言·数据结构·算法·新人首发
故事和你911 天前
洛谷-算法1-7-搜索2
数据结构·c++·算法·leetcode·深度优先·动态规划·图论
_深海凉_1 天前
LeetCode热题100-和为 K 的子数组
数据结构·算法