数据结构与算法(Java版)第1章 数据结构与算法
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2020年1月25日
⒊教学重点:
⑴ 数据、数据项、数据元素、数据结构的概念; ⑵ 逻辑结构和数据结构在概念上的联系与区别; ⑶ 抽象数据类型和数据抽象; ⑷ 评价算法优劣的标准及方法。
⒋教学难点:
⑴ 区别算法与程序; ⑵ 逻辑结构、存储结构的联系与区别; ⑶ 抽象数据类型与数据抽象; ⑷ 算法的时间复杂度分析。
数据结构是计算机及相关专业中一门重要的专业基础 课程。当用计算机来解决实际问题时,就要涉及到数据的 表示及数据的处理,而数据表示及数据处理正是数据结构 课程的主要研究对象,通过这两方面内容的学习,为后续 课程,特别是软件方面的课程打下厚实的知识基础,同时 也提供了必要的技能训练。因此,数据结构课程在计算机 应用专业中具有举足轻重的作用。
2020年1月25日
课程任务
在基础方面,要求学生掌握常用数据结构的基 本概念及其不同的实现方法;在技能方面,通过系 统学习能够在不同存储结构上实现不同的运算,并 对算法设计的方式和技巧有所体会。
学业基础
本课程的先修课程为离散数学和高级语言程序设 计。学习本课程必须具备高级语言程序设计(C语言) 的基础知识与基本技能。它的后续课程有操作系统 和数据库原理等。
2020年1月25日
2、数据结构课程的内容 数据结构课程集中讨论软件开发过程中的设计阶段、同时
涉及编码和分析阶段的若干基本问题。此外,为了构造出好的 数据结构及其实现,还需考虑数据结构及其实现的评价与选择。 因此,数据结构的内容包括三个层次的五个“要素”。
2020年1月25日
1.2 数据结构的概念
2020年1月25日
4、数据结构
数据结构(Data Structure)是指互相之间存在着 一种或多种关系的数据元素的集合。在任何问题中, 数据元素之间都不会是孤立的,在它们之间都存在着 这样或那样的关系,这种数据元素之间的关系称为结 构。
根据数据元素间关系的不同特性,通常有下列四类 基本的结构: ⑴集合结构。⑵线性结构。⑶树结构。⑷图结构。
2020年1月25日
第1章 数据结构与算法
⒈教学内容:
(1)数据结构的概念; (2)抽象数据类型; (3)算法和算法分析。 ⒉ 教学目的: (1)领会数据、数据元素和数据项的概念及其相互间的
关系; (2)清楚数据结构的逻辑结构、存储结构的联系与区别; (3)理解抽象数据类型的概念; (4)掌握进行简单算法分析的方法。
2020年1月25日
【例1-1】成绩检索 系统。要求成绩检索 系统提供自动查询的 功能,如查找某个学 生的单科成绩或平均 成绩,查询某门课程 的最高分等等。
2020年1月25日
来自百度文库
学号
姓名
平均成绩
考试成绩 高等数学 C语言
英语
20071801 吴承志 90
95
85
90
20071802 李淑芳 88
76
2020年1月25日
由以上三个例子可见,描述这类非数值计算问题的数学 模型不再是数学方程,而是诸如表、树、图之类的数据结 构。因此,可以说数据结构课程主要是研究非数值计算的 程序设计问题中所出现的计算机操作对象以及它们之间的 关系和操作的学科。
2020年1月25日
1.1.2 数据结构课程的内容
1、数据结构课程的发展
其中,D是数据元素的有限集,R是D上关系的有限集。 (2) 应用层次的数据结构包括数据的逻辑结构和数据的物理结 构。
数据结构作为一门独立的课程在国外是从1968年才开 始的,但在此之前其有关内容已散见于编译原理及操作系 统之中。
从20世纪60年代末到70年代初,出现了大型程序,软 件也相对独立,结构程序设计成为程序设计方法学的主要 内容,人们越来越重视数据结构。
从70年代中期到80年代,各版本的数据结构著作相继 出现。
1.2.1 有关概念和术语
1、数据
数据是信息的载体,是所有能够被计算机识别、存储和加 工处理的符号的总称。
2、数据项
数据项(Data Item)是具有独立含义的标识单位,是数 据不可分割的最小单位。
3、数据元素
数据元素(Data Element)是数据的基本单位。
4、数据对象
数据对象(Data Object)或数据元素类(Data Element Class)是具有相同性质的数据元素的集合。
2020年1月25日
下图为表示上述四类基本结构的示意图。
(a)集合结构
(b)线性结构
(c)树结构
(d)图结构 四类基本结构的示意图
2020年1月25日
(1)逻辑层次的数据结构有两个要素。 一个是数据元素的集合,另一个是关系的集合。 形式上,数据结构可以采用一个二元组来表示: Data_Structure =(D,R)
2020年1月25日
1.1 引言
1.1.1 为什么要学习数据结构
在计算机发展的初期,人们使用计算机的目的主要是处理 数值计算问题。由于当时所涉及的运算对象是简单的整型、 实型或布尔类型数据,所以程序设计者的主要精力是集中于 程序设计的技巧上,而无须重视数据结构。
随着计算机应用领域的扩大和软、硬件的发展,非数值计 算问题越来越显得重要。这类问题涉及到的数据结构更为复 杂,数据元素之间的相互关系一般无法用数学方程式加以描 述。解决这类问题的关键是要设计出合适的数据结构,才能 有效地解决问题。
…
…
…
…
…
图 1-1 学生成绩表
【例1-2】棋盘布局问题。要求 将4个棋子布在4行4列的棋盘上, 使得任两个棋子既不在同一行或同 一列,也不在同一对角线上。
【例1-3】教学计划编排问题一 个教学计划包含许多课程,在教 学计划包含的许多课程之间,有 些必须按规定的先后次序进行, 有些则没有次序要求。即有些课 程之间有先修和后续的关系,有 些课程可以任意安排次序。这种 各个课程之间的次序关系可用一 个称作图的数据结构来表示,如 图所示。有向图中的每个顶点表 示一门课程,如果从顶点vi到vj之 间存在有向边<vi,vj>, 则表示课程i必须先于课程j进行。
91
85
20071803 刘 丽
92
78
82
84
20071804 张会友 81
78
72
77
20071805 石宝国 76
82
79
79
20071806 何文颖 86
90
91
89
20071807 赵胜利 76
78
80
78
20071808 崔文靖 82
93
86
87
20071809 刘 丽
80
85
81
82
…
⒊教学重点:
⑴ 数据、数据项、数据元素、数据结构的概念; ⑵ 逻辑结构和数据结构在概念上的联系与区别; ⑶ 抽象数据类型和数据抽象; ⑷ 评价算法优劣的标准及方法。
⒋教学难点:
⑴ 区别算法与程序; ⑵ 逻辑结构、存储结构的联系与区别; ⑶ 抽象数据类型与数据抽象; ⑷ 算法的时间复杂度分析。
数据结构是计算机及相关专业中一门重要的专业基础 课程。当用计算机来解决实际问题时,就要涉及到数据的 表示及数据的处理,而数据表示及数据处理正是数据结构 课程的主要研究对象,通过这两方面内容的学习,为后续 课程,特别是软件方面的课程打下厚实的知识基础,同时 也提供了必要的技能训练。因此,数据结构课程在计算机 应用专业中具有举足轻重的作用。
2020年1月25日
课程任务
在基础方面,要求学生掌握常用数据结构的基 本概念及其不同的实现方法;在技能方面,通过系 统学习能够在不同存储结构上实现不同的运算,并 对算法设计的方式和技巧有所体会。
学业基础
本课程的先修课程为离散数学和高级语言程序设 计。学习本课程必须具备高级语言程序设计(C语言) 的基础知识与基本技能。它的后续课程有操作系统 和数据库原理等。
2020年1月25日
2、数据结构课程的内容 数据结构课程集中讨论软件开发过程中的设计阶段、同时
涉及编码和分析阶段的若干基本问题。此外,为了构造出好的 数据结构及其实现,还需考虑数据结构及其实现的评价与选择。 因此,数据结构的内容包括三个层次的五个“要素”。
2020年1月25日
1.2 数据结构的概念
2020年1月25日
4、数据结构
数据结构(Data Structure)是指互相之间存在着 一种或多种关系的数据元素的集合。在任何问题中, 数据元素之间都不会是孤立的,在它们之间都存在着 这样或那样的关系,这种数据元素之间的关系称为结 构。
根据数据元素间关系的不同特性,通常有下列四类 基本的结构: ⑴集合结构。⑵线性结构。⑶树结构。⑷图结构。
2020年1月25日
第1章 数据结构与算法
⒈教学内容:
(1)数据结构的概念; (2)抽象数据类型; (3)算法和算法分析。 ⒉ 教学目的: (1)领会数据、数据元素和数据项的概念及其相互间的
关系; (2)清楚数据结构的逻辑结构、存储结构的联系与区别; (3)理解抽象数据类型的概念; (4)掌握进行简单算法分析的方法。
2020年1月25日
【例1-1】成绩检索 系统。要求成绩检索 系统提供自动查询的 功能,如查找某个学 生的单科成绩或平均 成绩,查询某门课程 的最高分等等。
2020年1月25日
来自百度文库
学号
姓名
平均成绩
考试成绩 高等数学 C语言
英语
20071801 吴承志 90
95
85
90
20071802 李淑芳 88
76
2020年1月25日
由以上三个例子可见,描述这类非数值计算问题的数学 模型不再是数学方程,而是诸如表、树、图之类的数据结 构。因此,可以说数据结构课程主要是研究非数值计算的 程序设计问题中所出现的计算机操作对象以及它们之间的 关系和操作的学科。
2020年1月25日
1.1.2 数据结构课程的内容
1、数据结构课程的发展
其中,D是数据元素的有限集,R是D上关系的有限集。 (2) 应用层次的数据结构包括数据的逻辑结构和数据的物理结 构。
数据结构作为一门独立的课程在国外是从1968年才开 始的,但在此之前其有关内容已散见于编译原理及操作系 统之中。
从20世纪60年代末到70年代初,出现了大型程序,软 件也相对独立,结构程序设计成为程序设计方法学的主要 内容,人们越来越重视数据结构。
从70年代中期到80年代,各版本的数据结构著作相继 出现。
1.2.1 有关概念和术语
1、数据
数据是信息的载体,是所有能够被计算机识别、存储和加 工处理的符号的总称。
2、数据项
数据项(Data Item)是具有独立含义的标识单位,是数 据不可分割的最小单位。
3、数据元素
数据元素(Data Element)是数据的基本单位。
4、数据对象
数据对象(Data Object)或数据元素类(Data Element Class)是具有相同性质的数据元素的集合。
2020年1月25日
下图为表示上述四类基本结构的示意图。
(a)集合结构
(b)线性结构
(c)树结构
(d)图结构 四类基本结构的示意图
2020年1月25日
(1)逻辑层次的数据结构有两个要素。 一个是数据元素的集合,另一个是关系的集合。 形式上,数据结构可以采用一个二元组来表示: Data_Structure =(D,R)
2020年1月25日
1.1 引言
1.1.1 为什么要学习数据结构
在计算机发展的初期,人们使用计算机的目的主要是处理 数值计算问题。由于当时所涉及的运算对象是简单的整型、 实型或布尔类型数据,所以程序设计者的主要精力是集中于 程序设计的技巧上,而无须重视数据结构。
随着计算机应用领域的扩大和软、硬件的发展,非数值计 算问题越来越显得重要。这类问题涉及到的数据结构更为复 杂,数据元素之间的相互关系一般无法用数学方程式加以描 述。解决这类问题的关键是要设计出合适的数据结构,才能 有效地解决问题。
…
…
…
…
…
图 1-1 学生成绩表
【例1-2】棋盘布局问题。要求 将4个棋子布在4行4列的棋盘上, 使得任两个棋子既不在同一行或同 一列,也不在同一对角线上。
【例1-3】教学计划编排问题一 个教学计划包含许多课程,在教 学计划包含的许多课程之间,有 些必须按规定的先后次序进行, 有些则没有次序要求。即有些课 程之间有先修和后续的关系,有 些课程可以任意安排次序。这种 各个课程之间的次序关系可用一 个称作图的数据结构来表示,如 图所示。有向图中的每个顶点表 示一门课程,如果从顶点vi到vj之 间存在有向边<vi,vj>, 则表示课程i必须先于课程j进行。
91
85
20071803 刘 丽
92
78
82
84
20071804 张会友 81
78
72
77
20071805 石宝国 76
82
79
79
20071806 何文颖 86
90
91
89
20071807 赵胜利 76
78
80
78
20071808 崔文靖 82
93
86
87
20071809 刘 丽
80
85
81
82
…