数据结构之绪论(二)
引言
上一篇复习了什么是数据结构,以及逻辑结构、存储结构和数据运算。然后继续复习数据结构绪论部分。
正文
1.2 抽象数据类型
首先还是先介绍下术语:抽象,数据抽象和过程抽象。
数据结构是要在计算机上进行的,所以有必要对现实世界的数据进行抽象化,这降低了问题求解的难度,也有利于在计算机上实现。
接下来 继续探讨数据结构,然后实现对其的抽象化
数据类型与数据结构的关系:
- 数据类型就是已经实现了的数据结构
关于抽象数据类型
抽象数据类型(ADT)指的是从求解问题的数学模型中抽象出来的数据逻辑结构和运算(抽象运算),而不考虑计算机的具体实现。
- 抽象数据类型 = 逻辑结构 + 抽象运算
说简单点 抽象数据类型就是帮助程序猿将复杂的现实数据简化,方便程序猿使用。
1.3 算法及其描述
先来介绍什么是算法
数据元素之间的关系有逻辑关系和物理关系,对应的运算有基于逻辑结构的运算描述和基于存储结构的运算实现
然后 通常把基于存储结构的运算实现的步骤或过程称为算法。
也就是说 算法是为了实现某一运算功能
违反以上的任一个特性就不能被称为算法
关于违反哪一特性的判断我就不赘述了
其中 关于描述输出型参数
C++语言中提供了一种引用运算符“&”用于描述输出型参数
&可以使形参回传给实参,实参和形参同步发生改变
方便了我们的算法
1.4 算法分析基础
此部分是重点
尤其是关于时间复杂度和空间复杂度的计算
先来介绍下分析算法
分析算法也就是为了判断算法优劣,以便改进算法
一个算法是由控制结构(顺序、分支和循环三种)和原操作(指固有数据类型的操作,如+、-、*、/、++和–等)构成的。算法执行时间取决于两者的综合效果。
在分析算法时 有两种分析方法
因此我们注重的是事前估算分析法
这种方法也有两种不同的分析角度
- 一种是时间角度 计算时间复杂度
- 一种是空间角度 计算空间复杂度
先来介绍时间复杂度
Eg:
进行表示时 往往使用O(n)这种形式表示
然后为了简化 我们往往只取最高数量级
进行时间复杂度分析时
接下来介绍空间复杂度
空间复杂度:用于度量一个算法在运行过程中临时占用的存储空间大小。
一般也作为问题规模n的函数,采用数量级形式描述,记作:
S(n) = O(g(n))
空间复杂度分析只考虑临时占用的存储空间
Eg:
算法的最坏时间复杂度为:W(n)=MAX{T(I)}
算法的最好时间复杂度为:B(n)=MIN{T(I)}
I∈Dn
下一个重点
递归算法的时空复杂度分析
倘若未注意到这是递归算法
可能会觉得它只含一层循环 时间复杂度为O(n)
由于递归 使得我们的分析错误
正解:
好了 绪论的内容到此为止了
进行下小结