1.1 数据结构基本概念
1.1.1 基本术语
1. 数据
信息的载体。
描述客观事物属性的数、字符以及所有能输入至计算机并被计算机程序识别和处理的符号的集合
2. 数据元素
数据的基本单位。
一个数据元素可由多个数据项 [构成数据元素的不可分割的最小单位] 构成。
3. 数据对象
具有相同性质的数据元素的集合。
数据对象是数据的一个子集。
4. 数据类型
一个值的集合 和 定义在该集合上的一组操作 的总称。
数据类型可分为:
(1)原子类型:其值不可再分
(2)结构类型:包含一个或多个指定属性
(3)抽象数据类型:一个数学模型 和 定义在该模型上的一组操作
5. 数据结构
相互之间存在一种 或 多种特定关系的数据元素的集合。
结构:数据元素之间的关系。
☀️数据结构三要素:逻辑结构、存储结构、数据运算。
1.1.2 数据结构三要素
1. 数据的逻辑结构
逻辑结构是指数据元素之间的逻辑关系。
集合:数据元素之间只存在“同属于一个集合”的关系。
线性结构:数据元素只存在一对一关系。
树:数据元素存在一对多关系
图:数据元素存在多对多关系。
2. 数据的存储结构(物理结构)
存储结构是指数据结构在计算中的表示(映像)。
存储结构包括数据元素的表示 和 关系的表示。
存储结构主要有以下四种:
(1)顺序存储
(2)链式存储
(3)索引存储
(4)散列存储(哈希存储)
3. 数据的运算
运算的定义是针对逻辑结构的,指出运算的功能。
运算的实现是针对存储结构的,指出运算的操作步骤。
1.2 算法和算法评价
1.2.1 算法基本概念
算法:对特定问题求解步骤的一种描述,它是指令的有限序列(每条指令包含一个或多个操作)。
☀️算法五大特性:
(1)有穷性:有穷步后结束,每一步在有穷时间内完成
(2)确定性:每条指令有确切含义
(3)可行性:操作可通过基本运算执行有限次实现
(4)输入:零个 或 多个输入
(5)输出:一个 或 多个输出
☀️“好”算法的目标:
(1)正确性
(2)可读性
(3)健壮性:可对非法输入作出反应
(4)高效率与低存储量需求:效率(执行时间);存储量需求(执行所需最大存储空间)
1.2.2 算法效率度量
1. 时间复杂度
语句的频度:该语句在算法中被重复执行的次数。
算法中所有语句的频度之和记为T(n),时间复杂度主要分析T(n)的数量级。
算法的时间复杂度为算法中基本运算的执行次数。
其中,O的含义是T(n)的数量级,严格定义是:若T(n)和f(n)是定义在正整数集合上的两个函数,则存在正常数C和n0,使得当
时,均满足
。
算法时间复杂度不仅取决于问题规模n,也取决于待输入数据的性质。
算法时间复杂度包括:最坏时间复杂度、平均时间复杂度(等概率输入)、最好时间复杂度
计算时间复杂度的两条规则:
(1)加法规则:
(2)乘法规则:
☀️常见渐进时间复杂度:
2. 空间复杂度
算法的空间复杂度S(n)定义为该算法所需的存储空间,记作
若输入数据只取决于问题本身,与算法无关,则只需分析额外空间。
算法原地工作:算法所需辅助空间为常量,及O(1)。