数据结构严蔚敏版 第一章笔记
数据结构是什么
数据结构是一门研究非数值计算的程序设 计问题中计算机的操作对象以及它们之间的关系和操作等的学科。
数据结构 (data structure) 是相互之间存在 一 种或多种特定关 系的数据元素的集合。
基本概念和术语
数据
数据 (data) 是对客观事物的符号表示,在计算机科学中是指所有能输入到计算机中 并被计算机程序处理的符号的总称。
数据元素
数据元素 (data element) 是数据的基本单位,在计算机程序中通常作为一个整体进行 考虑和处理。
数据对象
数据对象 (data object) 是性质相同的数据元素的集合,是数据的一个子集。
位
在计算机中表示信息的最小单位是二进制数的一位, 叫做位 bit
结点 元素
以用一个由若干位组合起来形成的一个位串表示一个 数据元素(如用一个字长的位串表示一个整数,用 8 位二进制数表示一个字符等),通常称 这个位串为元素 (j)(element) 或结点 (node) 。
数据域
当数据元素由若干数据项组成时,位串中对应于各个数据项的子位串称为数据域
逻辑结构
结构定义中的“关系”描述的是数据元素之间的逻辑关系
物理结构,存储结构
数据结构在计算机中的表示(又称映像)称为数据的物理结构,又称存储结构
顺序映像 顺序存储
顺序映像的特点是借助 元素在存储器中的相对位置来表示数据元素之间的逻辑关系。
虚拟存储结构
假如我们把 C 语言看成是一个执行 C 指令和 C 数据类型的虚拟处理器,那么本书中讨论的存储结构是数据结构在 C 虚拟处理器中的 表示,不妨称它为 虚拟存储结构 。
数据类型
数据类型 是一个值的集合和定义在这个值集上的一组操作的总称。
数据类型的分类
非结构的原子类型
原子类型的值是不 可分解的 , 例如 C 语言中的基本类型(整型、实型、字符型和枚举 类型)指针类型和空类型 。
结构类型
构类型的值是由若干成分按某种结构 组成的 , 因此是可以分解的 , 并且它的成分可以是非结构的 , 也可以是结构的 。
抽象数据类型(ADT)
是指一个数学模型以及定义在该模型上的一组操作
- 一个含抽象数据类型的软件模块通常应包含定义、表示和实现 3 个部分。
- 原子类型
- 固定聚合类型
- 可变聚合类型
抽想数据类型可用以下三元组表示
(D,S,P)
D是数据对象, S 是 D 上的关系集, P 是对 D 的基本操作集。
//抽象数据类型定义
ADT 抽象数据类型名 {
数据对象; (数据对象的定义)
数据关系; (数据关系的定义)
基本操作; (基本操作的定义)
}ADT 抽象数据类项名
//基本操作的定义
基本操作名 (参数表)
初始条件; (初始条件描述)
操作结果; (操作结果描述)
- 基本操作的两种参数
- 赋值参数
- 提供输入值
- 引用参数
- 提供输入值
- 返回操作结果
- 赋值参数
- 多形数据类型 (polymorphic data type) 是指其值的成分不确定的数据类型。
抽象数据类型的表示与实现
抽象数据类型可通过固有数据类 型来 表示和实现,即利用处理器中已存在的数据类 型来说 明新的结构,用已经实现的操作来组合新的操作
算法与算法分析
算法的五个重要特性
- 有穷性
- 确定性
- 可行性
- 输入
- 输出
算法设计的要求
- 正确性
- 可读性
- 健壮性
- 效率与低存储量需求
算法效率的度量
事后统计法
事前分析法
- 依据的算法选用何种策略
- 问题的规模,例如求 100 以内还是 1000 以内的素数;
- 书写程序的语言,对于同一个算法,实现语言的级别越高,执行效率就越低;
- 编译程序所产生的机器代码的质量;
- 机器执行指令的速度。
时间复杂度
一般情况下,算法中基本操作重复执行的次数是问题规模 n 的某个函数 f(n) ,算法的时间度量记作
T(n)=O(f(n))
- 语句的频度 (frequency count) 指的是该语句重复执行的次数
空间复杂度
S(n)=O(f(n))