本章重点内容:分析算法的时间复杂度和空间复杂度
一.数据结构的基本概念
1.数据:是信息的载体,由数据对象组成
2.数据元素:是数据的基本单位。一个数据元素可由若干数据项组成
数据项:构成数据元素的最小单位
3.数据对象:具有相同性质的数据元素的集合,是数据的一个子集。
4.数据类型:一个值的集合和定义在此集合上的一组操作的总称
- 原子类型:值不可再分
- 结构类型:值可以再分
- 抽象数据类型(ADT),定义逻辑结构和数据运算,不讨论用哪种存储结构
定义一个ADT,也就定义了一个数据结构
5.数据结构:存在各种关系元素的集合,包括三方面内容:逻辑结构、存储结构、数据的运算
逻辑机构和存储结构是密不可分的,一个算法的设计取决于所选定的逻辑结构,算法的实现依赖于采用的存储结构
二.数据结构三要素
1.数据的逻辑结构:数据元素之间的逻辑关系,与数据存储无关,独立于计算机的
2.数据的存储结构:数据结构在计算机中的表示(映像),也称物理结构。包括数据元素的表示和关系的表示。确定存储结构,才能实现数据结构
3.数据的运算:包括定义和实现,定义针对逻辑机构,实现针对存储结构
三.时间复杂度和空间复杂度
1.时间复杂度
定义:事前预估算法时间开销T(n)与问题模型n的关系
记为:T(n)=O(f(n))
只需要保留最高阶
一般总考虑在最坏情况下的时间复杂度
**如何计算**:
1)找到一个基本操作,如果存在循环,就看最深层的循环了几次
2)执行次数x与问题模型n的关系,x=f(n)
3)x的数量级O(x)就等于T(n)
注:顺序执行的代码只影响常数项,可忽略
a)加法法则:T(n)=T₁(n)+T₂(n)=O(f(n))+O(g(n))=O(max(f(n),g(n)))
b)乘法法则:T(n)=T₁(n)×T₂(n)=O(f(n))×O(g(n))=O(f(n)×g(n))
时间复杂度由低到高口诀:常对幂指阶
O(1)<O(log₂n)<O(n)<O(nlog₂n)<O(n²)<O(2ⁿ)<O(n!)<O(nⁿ)
2.空间复杂度
算法所消耗的存储空间,记为:S(n)=O(g(n))
算法原地工作:算法所需的辅助空间为常量
空间复杂度=递归调用的深度 S(n)=O(n)
啾咪~到这里就结束啦😘
作者:优雅猿人Sansan
本文仅限数据结构考纲内容,并非完整,具体内容参考《王道数据结构》
本文源自:<22–数据结构–第一章 绪论>
相关推荐:优雅猿人Sansan<普歌-云言团队-Docker-安装及卸载>
本文版权归作者和CSDN共有, 欢迎转载, 且在文章页面显示位置给出原文连接, 未经作者同意必须保留此段声明, 否则保留追究法律责任的权利