绪论
考纲
计算时间复杂度和空间复杂度(重点难点)
DS 基本概念
1. 基本概念
- 数据:信息的载体。
- 数据元素:数据的基本单位。
- 数据项:构成数据的最小单位。一个数据元素有若干个数据项组成。
- 数据对象:相同性质的数据元素的集合,是数据的子集。
- 数据类型:值的集合和定义在集合上的操作的总称。
- 原子类型
- 结构类型
- 抽象数据类型
- 数据结构:存在特定关系的数据元素的集合。
三要素:逻辑结构、存储结构、数据的运算
抽象数据类型可以定义一个完整的数据结构
2. 数据结构三要素
逻辑结构:元素之间的逻辑关系,与存储无关,独立于计算机。
- 线性结构:线性表、站和队列、串、数组
- 非线性结构:集合、一般树、二叉树、有向图、无向图
存储结构:在计算机中的表示(映像),包括数据元素的表示和关系的表示。
- 顺序存储:逻辑上相邻,物理位置也相邻。
优缺点:随机存取,但只能使用相邻的一整块存储单元。 - 链式存储:不要求逻辑上相邻物理上也相邻。
优缺点:按顺序存取,不会出现碎片现象,存储指针占用存储空间。 - 索引存储:建立索引表,每项称为索引项(占存储空间)
优缺点:检索速度快,但占用额外内存,增删元素也要修改索引表,花费时间多。 - 散列存储:
Hash
存储,根据元素关键字计算元素的存储地址。
优缺点:增删查速度快,但如果散列函数不好,会出现冲突,而解决冲突会增加花销。
算法(时/空间复杂度计算)
1. 算法概念
算法:对问题求解步骤的描述。指令的有限序列,每条指令代表一个或多个操作。
五大特性:有穷性、确定性、可行性、输入、输出。
好算法目标:正确性、可读性、健壮性、高效率低存储量需求。
2. 算法效率的度量
算法效率度量通过时间复杂度和空间复杂度来描述。
时间复杂度:
频度:语句被重复执行的次数。
T(n) : 所有语句的频度之和。n是算法问题规模
时间复杂度主要分析T(n)的数量级。
通常我们将算法中基本运算的执行次数的数量级作为该算法的时间复杂度。即T(n)=O(f(n))
一般我们考虑在最坏情况下的时间复杂度。
分析时间复杂性的两条规则:
- 加法规则:
T(n) = T1(n) + T2(n) = O( f(n)+g(n) )=O( max(f(n),g(n)) )
- 乘法规则:
T(n) = T1(n) * T2(n) = O( f(n)*g(n) )
常见渐进时间复杂度:O(1) < O(log2n) < O(n) < O(nlog2n) < O(n^2) < O(n^3) < O(2^n) < O(n!) < O(n^n)
不会算时间复杂度?推荐一个很好的博客喔,一学就会:http://t.csdnimg.cn/muccC
空间复杂度:
空间复杂度S(n) = O(g(n))
一个程序在进行操作时可能需要一些额外的辅助空间。
算法原地工作:算法所需辅助空间为常量,即O(1)
小结
本章要求掌握时间复杂度的求解,多做几个题。
啦啦啦学习408了,一边工作一边学习还真是累呢hhh
一起努力!!!