数据结构之绪论(二)

引言

上一篇复习了什么是数据结构,以及逻辑结构、存储结构和数据运算。然后继续复习数据结构绪论部分。

正文

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)
由于递归 使得我们的分析错误
正解:
数据结构之绪论(二)
数据结构之绪论(二)
数据结构之绪论(二)

好了 绪论的内容到此为止了

进行下小结
数据结构之绪论(二)
数据结构之绪论(二)