当前位置:文档之家› 数据结构与算法分析 PPT

数据结构与算法分析 PPT

20
二、数据结构课程的形成和发展:
形成阶段: 60年代初期,“数据结构”有关的内容
散见于操作系统、编译原理和表处理语言等课 程。1968年,“数据结构”被列入美国一些大 学计算机科学系的教学计划。 发展阶段:
数据结构的概念不断扩充,包括了网络、 集合代数论、关系等“离散数学结构”的内容。
70年代后期,我国高校陆续开设该课程。
5
一、为什么要学习数据结构?
1、什么是程序、软件?
N.沃思(Niklaus Wirth)教授提 出:
程序=Байду номын сангаас法+数据结构
6
程序的主要目标是存储信息和检索信息,
而基础是信息表示.
程序设计核心目标:
(1)设计一种容易理解、编码和调
试的算法
(软件工程原理)
(2)设计一种能有效利用计算机资
源的算法
(数据结构
B E
C
比赛 比赛项目 时间
1 A,C
2 B,D
3E
4
F
19
总结:
求解非数值计算的问题主要考虑的是设计出合适 的数据结构及相应的算法。
即:首先要考虑对相关的各种信息如何表示、组 织和存储?
因此,可以认为:数据结构是一门研究非数
值计算的程序设计问题中计算机的操作对象以及它 们之间的关系和操作的学科。
2
❖计 算 机 科 学 技 术 以 惊 人 的 速 度 向前发展,它的广泛应用已从传 统的数值计算领域发展到各种非 数值计算领域。在非数值计算领 域里,数据处理的对象已从简单 的数值发展到一般的符号,进而 发展到具有一定结构的数据。
3
在这里,面临的主要问题是:针对每一种 新的应用领域的处理对象,如何选择合适的 数据表示(结构),如何有效地组织计算机 存贮,并在此基础上又如何有效地实现对象 之间的“运算”关系。传统的解决数值计算 的许多理论、方法和技术已不能满足解决非 数值计算问题的需要,必须进行新的探索。 数据结构就是研究和解决这些问题的重要基 础理论。因此,“数据结构”课程已成为计 算机类专业的一门重要专业基础课。
11
❖ 例1 书目自动检索系统
线性表
按书名
001
高等数书学目卡樊片映川
S01
002 登录理号论:力学 罗远祥
L01
003
高等数学 华罗庚
S01
004 书名线:性代数 栾汝书
S02
…… 作者名…:…
……
……
分类号:
按作者名
高等数学 001,003…出…版单位:樊映川
理论力学 002,……出.. 版时间:华罗庚
和算法)
程序简明清晰(简洁) 7
程序=算法+数据结构
以上公式说明了如下两个问题: (1)数据上的算法决定如何构造和 组织数据(算法→数据结构)。 (2)算法的选择依赖于作为基础的 数据结构(数据结构→算法)。 软件=程序+文档(软件工程的观点)
8
2、电子计算机的主要用途:
早期: 主要用于数值计算。
第一章 绪论
❖ 教学内容:
1.1数据结构的原则 1.2抽象数据类型和数据结构 1.3问题、算法和程序
❖ 学习要求:
理解、掌握算法的基本概念和简单的算法分析、数 据和数据结构的基本概念、数据的逻辑结构和存储 结构的基本概念及其性质和两种结构之间的关系。
1


二十一世纪是科学技术高速发展的 信息时代,而计算机是处理信息的 主要工具,因此,人们已经认识到, 计算机知识已成为人类当代文化的 一个重要组成部分。
线性代数 ……
0…0… 4,.. ……价格:
栾汝书 …….
001,… 002,…. 004,…. …….
L S ……
书目文件
索引表
按分类号
002,… 001,003, ……
12
例2人机对奕问题

……..
……..
13
…...
…...
…...
…...
例3多叉路口交通灯管理问题 图
C AB AC AD
后来: 处理逐渐扩大到非数值
计算领域(能处理多种复杂的具有一 定结构关系的数据)。
9
(1)数值计算解决问题的一般步骤:
数学模型→选择计算机语言→编出 程序→测试→最终解答。 数值计算的关键是:如何得出数学 模型(方程)? 程序设计人员比较关注程序设计的 技巧。
10
(2)非数值计算问题:
数据元素之间的相互 关系一般无法用数学 方程加以描述
姓名 丁1 马2 张3
项目1 项目2 项目3 跳高 跳远 100M 标枪 铅球 标枪 100M 200M
跳高
跳远
100M 200M
李4 铅球 200M 跳高 王5 跳远 200M
铅球
标枪
1、任一选手所选中的项目中应该两两有边相连;
2、任一两个有边相连的顶点颜色(时间)不能相同。
17
解法如下:
(1)设用如下六个不同的代号代表不同的
21
《数据结构课程》所处的地位:
22
1.2抽象数据类型和数据结构
一、名词解释
类型:是一组值的集合。如:整数 数据项:一条信息或其值属于某种类
设有六个比赛项目,规定每个选手至多可
参加三个项目,有五人报名参加比赛
(如下表所示)设计比赛日程表,使得
在尽可能短的时间内完成比赛。
姓名 丁一 马二 张三 李四 王五
项目 1 跳高 标枪 标抢 铅球 跳远
项目 2 跳远 铅球 100 米 200 米 200 米
项目 3 100 米
200 米 跳高
16
例6:田径赛的时间安排问题
4
1.1 数据结构的原则
数据结构:一类数据的表示及其相关操作 ❖ 学习数据结构的必要性
计算机功能强大更复杂的问题 更复杂的问题更大的计算量 工作越复杂越偏离人们的日常经验 故:必须有一种数据结构来组织各种复杂的数据。 任何一种数据项集合都必须具备查询、排序、 修改的功能,如果选择一个好的数据结构和算 法将会对程序的运行时间产生巨大的影响。
项目:
跳高 跳远 标枪 铅球 100米 200米
A
B
C
D
E
F
(2)用顶点代表比赛项目
不能同时进行比赛的项目之间连上一条边。
(3)某选手比赛的项目必定有边相连(不
能同时比赛)。
18
姓名 丁一 马二 张三 李四 王五
项目1 A C C D B
A F
D
项目2 B D E F F
项目3 E
F A
只需 安排四 个单位 时间进 行比赛
B
BA BC BD
DA DB DC
A
EA EB EC ED
D E
14
例4: 电话号码查询问题:
(1)按顺序存储方式:须遍历表 (2)按姓氏索引方式:索引 要写出好的查找算法,取决于这张表的 结构及存储方式。 电话号码表的结构和存储方式决定了查 找(算法)的效率。
15
例5: 田径赛的时间安排问题(无 向图的着色问题) :
相关主题