数据结构定义
- 数据:是描述客观事物额数和字符的集合。从计算机角度看,所有能输入到计算机中并被计算机处理的符号集合。
- 数据元素:数据的基本单位。也称元素,节点,定点,记录等。
- 数据项:具有独立含义的最小数据单位,也称字段和域。
- 数据对象:性质相同的数据元素的集合。
- 数据结构:所有数据元素以及数据元素之间的关系。(带结构的数据元素的集合)
- 数据结构包括以下几个方面:
- 数据的逻辑结构
- 数据的存储结构
- 数据的运算
- 数据的逻辑结构类型:
- 集合:数据元素之间除了“同属一个集合的关系”没有其他关系
- 线性结构:结构中的节点存在一对一的关系。例如:线性表
- 树形结构:结构中的节点存在一对多的关系。例如:二叉树
- 图形结构:结构中的节点存在多对多的关系。
树形结构和图形结构统称非线性结构。
表示:
B=(D,R)
B是数据结构,D是集合,R是D上的二元关系集合
- 数据的存储结构类型:
- 顺序存储结构:把逻辑上相邻节点存储在物理位置上相邻的存储单元。优点:节约存储空间,原因:节点之间的逻辑关系没有占用额外的存储空间。缺点:不便于修改,原因:修改时需要移动一系列的节点。例如:数组。
- 链式存储结构:节点之间的逻辑关系由附加的指针字段表示。优点:便于修改。原因:进行删改插时只需改变相应节点的指针域。缺点:存储空间利用率较低,不能随机存取,原因:存储单元有一部分用来存储节点之间的逻辑关系;逻辑上相邻的节点在存储空间中不一定相邻。
- 索引存储结构:在存储节点信息的同事,还建立附加的索引表。优点:可进行随机访问。缺点:增加了索引表,导致存储空间利用率降低。
- 散列(哈希)存储结构:根据节点的关键字通过哈希函数计算出一个值,并将这个值作为该节点的存储地址。优点:查找速度快。该存储方法只存储节点数据,不存储节点之间的逻辑关系。
算法
算法:对特定问题的求解步骤的一种描述。五个特性:
- 有穷性:有穷步骤,有穷时间内完成
- 确定性
- 可行性
- 有输入
- 有输出
算法设计的目标:
正确性,可读性,可使用性,健壮性,高效率与低存储量需求。
算法效率分析
- 方法:事后统计法,事前分析估算法
算法执行的时间大致为基本运算所需的时间与其运算次数的乘积。
- 方法:事后统计法,事前分析估算法
公式:T(n)=O(f(n))
T(n)基本运算执行次数;
O表示随问题规模n的增大算法执行时间的增长率和f(n)的增长率相同。
常数阶:O(1),一个没有循环的算法中基本运算次数与问题规模n无关
线性阶:O(n),一个只有一重循环的算法中基本运算次数与问题规模n成线性关系
各种不同数量级对应的值存在如下关系:
O(1) < O(logn) < O(n) < O(n*logn) < O(n2) < O(n3) < O(2n) < O(n!)
- 算法存储空间分析
一个算法的存储量包括输入数据所占空间,程序本身所占空间和辅助变量所占空间。对算法进行存储空间分析时值考查辅助变量所占空间。
公式:S(n)=O(g(n))