全套课件 数据结构--许绘香
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.3.2 算法的设计要求
程序设计的实质是对确定的问题 选择一种“好结构和好算法”,一 个好的算法应符合以下算法设计要 求: •(1)正确性 •(2)可读性 •(3)健壮性 •(4)高效率与低存储量需求
1.3.3 算法度量及分析
• 通常对于一个实际问题的解决,可以提 出若干个算法,那么如何从这些可行的 算法中找出最有效的算法呢?或者有了 一个解决实际问题的算法,我们如何来 评价它的好坏?这些问题需要通过算法 分析来确定。
1.1 数据结构的课程地位及研究内容
一、数据结构的课程地位
数据结构是计算机及相关专业的一 门专业基础课,是介于数学、计算 机硬件和计算机软件之间的一门核 心课程,是程序设计的后续课程, 同时也是编译原理、操作系统、数 据库等课程的基础。
二、数据结构的研究内容
例1-1 公司员工信息管理系统。
员工号 姓名 01002 王清 01003 李力 01004 张娟
5数据类型(Data Type)
数据类型是程序设计语言中所允许使用的 变量种类。一个数据类型不仅定义了相应变 量可以设定的值的集合,而且还规定了对变 量允许进行的一组运算及其规则。
例如,在C语言中定义的整型(int)是 32768~32767范围内所有整数的集合,以及 可以对整数进行的加、减、乘、除、求余等 运算。
• 算法可以用伪码、自然语言和框图等形式 描述,也可以用程序设计语言描述。从易 于实现的角度考虑,通常用某种程序设计 语言来描述算法,
• 例1-5 已知n个整数,求n个整数中的最大数。
一个算法应该具有下列特性: • (1)有穷性 • (2)确定性 • (3)可行性 • (4)有输入 • (5)有输出
数据的逻辑结构
存储结构
对数据的运算(或操作)。
(1)数据的逻辑结构(Logical Structure)
在形式上,数据结构可以采用二元组来表示: Data_Structure=(D,R)
其中D是数据元素集合,R是D中元素之间关系的 集合。
(2)数据的存储结构(Storage Structure)
例1-2 计算机和人对弈问题
• 若将对弈从开始到结束的过程中所有可能出 现的格局都画在一张图上,则可得到一棵倒 长的“树”。
由以上几个例子可见,描述非数值计算 问题的数学模型不再是数学方程,而是诸 如线性表、树、图之类的数据结构。因此, 数据结构课程是研究非数值计算的程序设 计问题中计算机处理对象以及它们之间关 系和操作的学科。它的主要研究:
• (1)数据元素之间的逻辑关系——数据的 逻辑结构;
• (2)数据元素及关系在计算机内的表示— —数据的存储结构;
• (3)数据的操作及实现。
1.2 基本概念和术语
• 1 数据(data) 数据是所有能被输入计算机、且能被
计算机处理的符号的集合,是计算机加 工处理的对象。
2 数据元素(data element) 数据元素是数据的基本单位。学生信
数据结构
第一章 绪论
随着计算机技术的飞速发展,计算 机应用的范围越来越广泛。因此, 要想高效地处理这些数据,必须深 入研究数据本身的特性、数据之间 的关系,以及如何有效地将数据存 储在计算机内,这正是数据结构所 要研究的主要问题。本章主要介绍 数据结构的基本概念,数据的逻辑 结构、存储结构及关系,算法及算
1.3 算法的描述和分析
瑞士计算机科学家N.Wirth指出: “程序=数据结构+算法” 它描述了计算机程序是由组织信息的数
据结构和处理信息的算法组成。二者相辅 相成,不可分割,对实际问题的求解,就 是选择一种好的数据结构,加上设计一个 好的算法。
1.3.1 算法
• 算法是对特定问题求解过程的描述,是一 个能够解决问题的、有具体步骤的方法, 是指令的有限序列。
是指数据的逻辑结构用计算机语言的实 现,即数据元素及其关系在计算机存储 器内的表示
①顺序存储。
②链式存储
③索引存储方法
④散列存储方法
(3)数据的运算
• 数据的运算即对数据施加的操作, 如插入、删除、检索等。在数据结 构中,这些运算需要通过算法来实 现。
• 数据的逻辑结构、数据的存储结构 及数据的运算这三方面是一个整体。 最后通过例子来增加对数据结构三 方面内容的感性认识。
息检索系统中学生信息表中的一个记录、 教学计划编排问题中的一个顶点等,都 被称为一个数据元素。
有时,一个数据元素可由若干个数据 项组成。
• 是数据之间的相互关系,即数据的组 织形式,是互相之间存在着一种或多种关系 的数据元素的集合。数据结构包括三个方面 的内容:
6 抽象数据类型(Abstract Data Type ,ADT)
• 抽象数据类型是指基于一类逻辑关系
的数据类型以及定义在这个类型上的
一组操作。抽象数据类型的描述格式 如下A{:DT 抽象数据类型名
数据对象:<数据对象的定义> 数据关系:<数据关系的定义> 基本操作:<基本操作的定义> }ADT 抽象数据类型名
• 时间复杂度往往不是精确的执行次数,而是 估算的数量级,它着重体现的是随着问题规 模n的增大,算法执行时间的变化趋势。因 此,“大Ο表示法”通常只关注T(n)的最高阶, 忽略其低次项和常数项。
• 例如,一个程序的实际执行时间为T(n)= 2.7n3+3.8n2+5.3,在这个多项式中随着n变大, n3项的成长比其它二项的成长速度快得多, 这二项因此可以被忽略,可以说对于较大的 n值,这个子程序基本上是一个2.7n3的处理 程序。故T(n)=Ο(n3)。
1 时间复杂度(Time Complexity)
• 一个算法的时间复杂度是指该算法的 运行时间与问题规模的对应关系。为 了便于比较同一问题的不同算法,通 常的做法是,从算法中选出一种对于 所研究的问题来说是基本操作的原操 作,以该基本操作重复执行的次数 (也称为频度)作为算法的时间度量。 一般情况下,算法中基本语句重复执 行的次数T(n)是问题的规模n的某个 函数f(n),因此,算法的时间度量
性别 男 女 女
01005 张爱民 男 …… …… ……
年龄 25 28 30
35 ……
住址
电话 所属部门
南京路10号 3562 财务
甘肃路6号 5673 总务
杭州路25号 2345 经理办公 室
洛阳路12号 2436 销售
……
…… ……
员工数据按照一定的顺序线性排列。这就 是解决该问题的模型(线性表)。