数据结构第01章概论.ppt

  1. 1、本文档共55页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构第01章概论

数 据 结 构 与 算 法 谢颂华 whxiesonghua@163.com 第1章 绪 论 1.1 什么是数据结构 1.2 学习数据结构的意义 1.3 数据结构涵盖的主要内容 1.4 什么是抽象数据类型 1.5 算法效率的度量 1.1 什么是数据结构 是相互之间存在一种或多种特定关系的数据元素的集合,表示为: 数据(data)——所有能被计算机识别、存储和处理的符号的集合(包括数字、字符、声音、图像等信息 )。 数据元素(data element)——是数据的基本单位,具有完整确定的实际意义(又称元素、结点,顶点、记录等)。 数据项(Data item)——构成数据元素的项目。是具有独立含义的最小标识单位(又称字段、域、属性 等)。 1.2 学习数据结构的意义   计算机内的数值运算依靠方程式,而非数值运算(如表、树、图等)则要依靠数据结构。   数据结构是一门学科,针对非数值计算的程序设计问题,研究计算机的操作对象以及它们之间的关系和操作等等。 1.3 数据结构涵盖的内容 数据的逻辑结构分类 线性结构(反映一对一的逻辑关系) 逻辑特征:有且仅有一个开始结点和一个终端结点,并且所有结点都最多只有一个直接前趋和一个直接后继。 实现:线性表 非线性结构(反映一对多或多对多的逻辑关系) 逻辑特征:一个结点可能有多个直接前趋和直接后继。 实现:树、 图(或网络) 学生成绩表 文件系统结构图 现实中的问题:迷宫 例如:在迷宫问题中,计算机之间所以能够找到迷宫的出口,是因为人们已将搜索出口的策略事先存入计算机中.在迷宫中,每走到一处,接下来可走的通路有三条,如图: 计算机处理的这类对象之间通常不存在线性关系,若将从迷宫入口处到出口的过程中所有可能的通路都画出来,则可以得到一棵倒长的”树”.”树根”是迷宫入口,”树叶”是出口或死路.”树”可以是某些非数值计算问题的数学模型.如下图: 在应用程序中涉及到各种各样的数据,如何在计算机中组织、存储、传递数据,需要讨论它们的归类及它们之间的关系,从而建立相应的数据结构,依此实现软件功能。 综上,描述这类非数值计算问题的数学模型不是数学方程,而是树、表和图之类的数据结构。 因此从广义上讲,数据结构描述现实世界实体的数学模型及其上的操作在计算机中的表示和实现。 (1) S=(D, R) D={ a, b, c, d, e, f } R={(a,e), (b,c), (c,a), (e,f), (f,d)} d1 d5 d2 d4 d3 答:物理结构亦称存储结构,是数据的逻辑结构在计算机存储器内的表示(或映像)。它依赖于计算机。 答:在数据的逻辑结构上定义的操作算法。 它在数据的存储结构上实现。 1.4 什么是抽象数据类型 1.4.1 数据类型与抽象数据类型的区别 1.4.2 抽象数据类型如何定义 例:给出自然数(Natural Number )的抽象数据类型定义。 1.4.3 抽象数据类型如何表示和实现 抽象数据类型可以通过固有的数据类型(如整型、实型、字符型等)来表示和实现。 1.5 算法效率的度量 1.5.1 什么是算法?如何评判算法的好坏? 1.5.2 时间复杂度和空间复杂度如何表示? 1.5.3 计算举例 1.5.1 什么是算法?如何评判一个算法的好坏? 算法分析 定义:为了解决某类问题而规定的一个有限长的操作序列 。 特性: 有穷性 执行有穷步,有穷时间内完成 确定性 每条指令的含义都必须明确, 无歧义 可行性 算法中描述的操作都是可以通过已经实现的基本运算执行有限次实现 输入 有0个或多个输入 输出 有一个或多个输出 例子: 选择排序 问题: 递增排序 解决方案:逐个选择最小数据 算法框架: for ( int i = 0; i n-1; i++ ) { //n-1趟 从a[i]检查到a[n-1]; 若最小整数在a[k], 交换a[i]与a[k]; } 细化:Select Sort void selectSort ( int a[ ], int n ) { //对n个整数a[0],a[1],…,a[n-1]按递增顺序排序 int i,j,k, temp ; for (i = 0; i n; i++ ) { k = i;

文档评论(0)

yan698698 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档