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

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)

相关推荐
Lucky_ldy19 小时前
数据结构从入门到精通:顺序表
数据结构·链表
熬夜敲代码的猫19 小时前
AVL树(C++详解版)
数据结构·c++·算法
并不喜欢吃鱼20 小时前
从零开始 C++-----十一【C++ 数据结构】红黑树全解析:从定义到工程实现(一文搞定,十分详细)
开发语言·数据结构·c++
星恒随风20 小时前
C语言数据结构排序算法详解(上):从插入排序、希尔排序到选择排序、堆排序
c语言·数据结构·笔记·学习·排序算法
迈巴赫车主20 小时前
蓝桥杯21247弹跳鞋java
java·开发语言·数据结构·算法·职场和发展·蓝桥杯
Cthy_hy20 小时前
Python算法竞赛:集合去重+字典映射 核心用法一站式整理
数据结构·python·算法
happymaker062621 小时前
LeetCodeHot100——盛水最多的容器
数据结构·算法·leetcode·双指针·hot100
过期动态21 小时前
【LeetCode 热题 100】三数之和
java·数据结构·算法·leetcode·职场和发展·排序算法
一切皆是因缘际会21 小时前
AI高速迭代下的技术风险与理性突围
大数据·数据结构·人工智能·架构
代码中介商1 天前
B+树:数据库索引的终极奥秘
数据结构