数据结构导论第一章
1.数据结构的概念
数据结构(Data structure)是指一组相互之间存在一种或多种特定关系的数据的数据的组织方式和他们在计算机内的存储方式,以及定义在该组数据上的一组操作。
数据结构主要研究:
1)数据(计算机加工对象)的逻辑结构
2)实现各种基本操作的算法
计算机解决问题的步骤分为:
- 建立数学模型
- 设计算法
- 编程实现算法
数据的逻辑结构是指数据以及数据的组织方式
1976年瑞士计算机尼克劳斯提出 “算法+数据结构=程序”
数据结构分为:数据的逻辑结构、数据的存储结构,数据的基本运算
1.2基本概念和术语
数据data:所有能被计算机处理的符号的集合
数据元素dataElement:是数据这个集合中的一个个体即数据的基本单位
数据项date item :数据元素常常还可分为若干个数据项,数据项是数据具有意义的 最小单位
如图所示,三种之间是包含关系,在数据库中数据项又称为字段或域 。它是数据的不可分割的最小表示单位。
实际问题中的数据称为原始数据
逻辑结构:指数据元素之间的结构关系
物理结构(存储结构):指书记接哦古在机内的表示,数据的逻辑结构在计算机中的实现。
逻辑结构的类型 :集合、线性结构、树状结构、图状结构
数据的存储结构
数据结构的存储包含数据元素的存储以及其逻辑关系的存储
存储结构可分为:顺序存储结构、链式存储结构、索引存储方式和散列存储方式等
顺序存储结构:借助数据元素的相对存储位置来表示数据的逻辑结构;线性表的顺序存储方法:将表中的结点一次存放在计算机内存中一组连续的存储单元中。
特点:1)预先分配好长度,需要预估存储数据需要的存储量
2)插入和删除需要移动其他元素
3)存取快捷,是随机存取结构
链式存储方式:数据元素地址的指针表示数据的逻辑结构
数据项|指针项
特点:
1)动态分配,不需要预先确定内存分配
2)插入和删除不需要移动其他元素
3)非随即存取结构
索引存储方式:借助索引表中的索引指示存储节点的存储位置
散列存储方式:用散列函数知识各节点的存储位置
1.3运算
运算就是指在某种逻辑结构上施加的操作,即对逻辑结构的加工
加工型运算:其操作改变原逻辑结构的值
引用型运算:其操作不改变原洛基结构的值
建立——查找——读取——插入——删除
算法规定了求解给定类所需的所有“处理步骤”以及执行顺序,
使给定类型问题能在有限时间内被机械的求解
算法必须使用某种语言描述:
1.程序
2.介于自然语言和程序设计语言的伪代码
3.非形式算法(自然语言)
4.框图(N-S图)
1.3算法描述
一个算法是对特定问题求解步骤的一种描述,它是指令有穷序列
算法具有以下特性:
1)有穷性 2) 确定性 3)可行性 4)输入 5)输出
1.4算法分析
算法的设计应满足:
1)正确性:对于合法的输入产生符合要求的输出
2)易读性:算法应该易读、便于交流,这也是保证算法正确性的前提;
添加注释也是一种增加可读的办法;
3)健壮性:当输入非法时,算法还能做出适当的反应而不会崩溃,如输出错误信息;
算法中应该考虑适当的错误处理;
4)时空性; 一个算法的时空性是指算法的世家复杂度和空间复杂度,算法分析主要分析算法的时间
复杂度和空间复杂度,目的是提高算法的效率。解决同一问题的算法可以有多种。 我们希望从中选出最优的算法,效率高或者存储空间小。为此,需要对算法进行评估,分析 。
通常考虑两个度量:
❖ 时间复杂度: 算法运行时需要的总步数,通
常是问题规模的函数。
❖ 空间复杂度: 算法执行时所占用的存储空间,
通常是问题规模的函数。