数据结构与算法数据结构和算法简介.ppt
《数据结构与算法数据结构和算法简介.ppt》由会员分享,可在线阅读,更多相关《数据结构与算法数据结构和算法简介.ppt(95页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、p在信息技术日益盛行的今天,计算机已成为解决各类实际问题的主要工具。p数据结构与算法是利用计算机进行求解问题的两大基石:数据结构刻画了实际问题中信息及其关系算法描述了问题解决方案的逻辑抽象。n数据就是计算机化的信息,是信息的有形表示,是现实世界的事物采用计算机能够识别、存储和处理的形式所进行的描述。n数据之间的关系就是“结构”。n加工、处理数据的规则就是“算法”。p关键词:数据、结构、算法数据结构和算法是相互依赖的:数据结构和算法是相互依赖的:只有恰当地确立问题的结构,才能只有恰当地确立问题的结构,才能选择和设计合适的解决方法。选择和设计合适的解决方法。合适的算法亦需要合适的结构进行合适的算法
2、亦需要合适的结构进行支撑。支撑。学习数据结构和算法是有效使用计算学习数据结构和算法是有效使用计算机的基本前提。机的基本前提。数据结构数据结构 vs vs 计算机科学计算机科学数据结构和算法是计算机学科的核心基础课程n任何问题都离不开数据 n任何数据的处理都离不开算法n数据结构和算法是后续专业课程学习的必要知识与技能准备 编译技术要使用栈、散列表及语法树 操作系统中用队列、存储管理表及目录树 数据库系统运用线性表、多链表、及索引树 etc.课程目标课程目标学会如何有效地组织信息,以便支持高效的数据处理掌握常用的基本数据结构及其应用n学会合理地组织数据,有效地表示数据,高效地处理数据n基本掌握算法
3、的设计与分析技术提高程序设计能力与程序的质量提高使用计算机解决问题的能力教材教材数据结构与算法数据结构与算法 张铭,王腾蛟,赵海燕 高等教育出版社 普通高等教育“十一五”国家级规划教材参考资料参考资料数据结构数据结构(C语言版语言版)严蔚敏严蔚敏 (作者作者),),吴伟民吴伟民 (作者作者)清华大学出版社算法算法导论导论(原书第原书第3版版)Thomas H.Cormen,Charles E.Leiserson Thomas H.Cormen,Charles E.Leiserson etc.etc.机械工业出版社课程学时:56考核方式:考试成绩评定:平时成绩(20%)+考试成绩(80%)学习方
4、法:n n课前预习,提出相关问题课前预习,提出相关问题n n课课上听讲,寻求问题的答案上听讲,寻求问题的答案n n课后复习,巩固知识课后复习,巩固知识认真完成作业第第1 1章章 概论概论问题求解数据结构及抽象数据类型算法的特性及分类算法的效率度量数据结构的选择和评价数据结构数据结构 +算法算法 =?数据结构 n有哪些基本的工具n如何用基本工具制造复杂工具算法n如何使用这些工具解决具体的问题 建立问题的模型n描述问题域中实际对象的数据及其相互关系,得到问题的逻辑模型。n将逻辑模型映射到计算机的存储器上,得到存储模型。n编制程序模拟对象领域中的求解过程。“算法算法数据结构数据结构 程序程序”表达了
5、算法与数据结构的联系及其在程序中的地位n程序就是在数据的某些特定的结构和表示的基础上对于算法的描述n算法与数据结构是程序设计中相辅相成、不可分割的两个方面1.1 问题求解问题求解使用计算机解决实际问题通常遵循以下步骤:第一步第一步:提出问题:提出问题第二步第二步:明确问题的描述,定义恰当的:明确问题的描述,定义恰当的数据结构描述处理对象。数据结构描述处理对象。第三步第三步:设计数据的加工处理规则,得:设计数据的加工处理规则,得到算法到算法第四步第四步:利用有效地程序设计语言编制:利用有效地程序设计语言编制程序程序第五步第五步:运行程序,解决问题:运行程序,解决问题求解问题n计算机科学是“一种关
6、于信息结构转换的科学”(Wegnor);(数据结构也称“信息结构”)n计算机科学是“算法的学问”,算法是精确定义的一系列规则,指出怎样从给定的输入信息经过有限步骤产生所求的输出信息(D.Knuth)n数据结构与算法两者相互依存,(数据结构离不开施于其上的操作,同时算法也必然离不开作为其处理对象和结果的数据。实例1 已知一组人的身高,如何从中找出最高、最矮的,再找出身材最适中的(诸如101个人中,找出高度第51位的那个)人?1)明确问题的要求:找不同身高的人2)定义处理对象的数据描述:人姓名+身高数据3)给出一种数据结构描述处理对象:名表(线性表)数组4)操作处理对象 设计一组操作规则,在上述数
7、据结构里找出不同身高的人 (这里给出详细的规则描述)5)选用恰当的程序设计语言编写程序 C/C+,Java,等实例2 股市的传言n n实际问题:利用股市传言现象进行谋利实际问题:利用股市传言现象进行谋利n n计算机计算机求解:将这样一个问题转换成用图描述的求解:将这样一个问题转换成用图描述的数学模型,将传言传播问题转换成图上的最短路数学模型,将传言传播问题转换成图上的最短路径问题,进而利用径问题,进而利用FloydFloyd算法求图上每个节点到其算法求图上每个节点到其它各节点的最短路径,比较各节点最长的最短路它各节点的最短路径,比较各节点最长的最短路径,最后求出最有效地传言传播途径。径,最后求
8、出最有效地传言传播途径。关键词:抽象将实际将实际问题抽象成某种数学模型,然后进行求解。问题抽象成某种数学模型,然后进行求解。程序和算法程序和算法程序是计算机程序是计算机“指令指令”的某种组合,用来控制计算机的工的某种组合,用来控制计算机的工作流程,完成一定的逻辑功能,从而实现某种任务。作流程,完成一定的逻辑功能,从而实现某种任务。算法是程序的逻辑抽象,是解决某类客观问题的过程。算法是程序的逻辑抽象,是解决某类客观问题的过程。程序是算法的具体程序是算法的具体实现,是用某种程序设计语言具体书写实现,是用某种程序设计语言具体书写的算法。的算法。算法是程序的灵魂,算法一般不依赖任何程序设计语言而算法是
9、程序的灵魂,算法一般不依赖任何程序设计语言而存在。存在。同一个算法可用不同的程序设计语言实现,从而得到多个同一个算法可用不同的程序设计语言实现,从而得到多个不同的程序,但解题思路都是一样的(为什么?)。不同的程序,但解题思路都是一样的(为什么?)。1.2 数据结构数据结构数据结构描述的是按照一定逻辑关系组织起来的数据的表示及其相关操作,涉及如下三个方面:n数据的逻辑结构:表示数据元素之间的逻辑关系;n数据的存储结构:数据结构在计算机存储器中的表示,也称存储表示;n数据的运算(结构的行为特征):(结构的行为特征):作用于数据结构上的运算。例如:检索,插入,删除等常见的基本数据结构 线性表,字符串
10、,堆栈与队列,树与二叉树,字典,图等 后面将逐一详解。关键词:表、树、图 学生花名册 自然界里的树 地图 特点:顺序结构特点:顺序结构 特点:分层结构特点:分层结构 特点:网状结构特点:网状结构 一颗倒生的树 数据的逻辑结构数据的逻辑结构 数据的逻辑结构是从具体问题抽象出来的数学模型,反映了事物的组成结构及事物之间的逻辑关系。用集合论的观点,数据的逻辑结构可以表示为一个二元组:B=(K,R)nK 是由有限个结点组成的集合,每一个结点都代表一个数据或一组有明确结构的数据。n R是定义在集合K上的一组关系,其中每个关系(relation)r(r R)都是 KK上的二元关系,用它描述结点数据之间的逻
11、辑关系。例如,r=|ki K,1 i n K K上的二元关系用二元组上的二元关系用二元组(k,kk,kK K)的集合)的集合表示。每个二元组表示。每个二元组是是K K上的有序对。上的有序对。若若r r R R,k,kk,kK K,r r,则称,则称k k为为k k在关系在关系r r上的直接前驱,上的直接前驱,k k为为k k在关系在关系r r上的直接后继。上的直接后继。没有前驱的结点称为开始没有前驱的结点称为开始结点,没有后继的结点结点,没有后继的结点称为终止结点。称为终止结点。数据的逻辑结构示例数据的逻辑结构示例 家族人员n把每个成员个体的属性描述作为数据结点n全部人员组成结点集Kn家族的各
12、类亲属关系就是一组关系R,其中如母系血缘关系r、远亲关系r*、和非血缘的亲情关系r等等,每一个关系要给出具体人员的关系元组例如:母子关系:兄弟关系:妯娌关系:结点是数据结构中数据的基本单位,也称为“元素”。结点的类型是指结点的数据类型n n如如:学生花名册中每个元素是学生记录类型。:学生花名册中每个元素是学生记录类型。n n数据结构数据结构课程考试成绩的每个元素是一个整型数。课程考试成绩的每个元素是一个整型数。关键词:类型,代表一种种类。结点的类型结点的类型结点的类型可以是基本数据类型,也可以是复合数据类型n基本数据类型:最简单的数据类型,如整型、实型、字符型n复合数据类型:由基本数据类型或复
13、合数据类型的数据组合而成的复杂型数据类型。如数组,用户自定义类型等。基本数据类型基本数据类型整数类型(integer):该类型规定了整数所能表示的范围。通常,在计算机中一般使用1到4个字节来存储整数。实数类型(real):计算机的浮点数据类型所能表示的数值范围和精度是有限的。机器一般使用4到8个字节来存储浮点数。布尔类型(boolean):取值为真(true)和假(false),在C+语言中一般使用整数0表示false,用非0表示true 字符类型(char):用单个字节(8bit)表示ASCII字符集中的字符。n汉字符号需要使用2个字节(每个字节的最高位bit为1)的编码,单个字节对于汉字是
14、没有独立含义的n在C+中把双字节表示中文符号的字节类型称为w_char类型(wide character)。n目前国际上已经采用了统一的扩展字符集合标准UNICODE,这一标准允许英、日、韩、阿拉伯语等文字的混合文字处理特殊的数据类型:指针类型(pointer)用于表示计算机中内存单元的地址。某指针类型变量的值是某一内存单元的地址,简称为该指针指向该内存单元。n由于机器的指令系统一般采用32 bit或64bit的地址长度,所以指针类型也相应地用4个字节或8个字节来表示一个指针。n指针值的存储和指针值的运算方式,在形式上与正整数相似。n指针的运算一般仅限于两个指针地址的比较,加减,或对一个指针增
15、减一个整数量等,乘、除等运算对指针无效。复合数据类型复合数据类型复合类型是由基本数据类型组合而成的数据结构类型例如:在程序语言中常用的数组类型,结构(记录)类型等皆属复合数据类型复合数据类型本身,又可以参与定义结构更为复杂的结点类型结构的分类结构的分类 讨论逻辑结构(K,R)的分类,一般把讨论重点放在关系集R上。用R的性质来刻划数据结构的特点,并对数据结构进行分类:n线性结构(linear structure)n树型结构(tree structure)n图结构 (graph structure)线性结构线性结构线性结构中的关系r 称为线性关系,也称为“前驱关系”。线性关系r中,每个结点至多只有
16、一个前驱结点和一个后继结点。n开始结点没有前驱结点,终止结点没有后继结点。n其它结点为“内部结点”,在关系r上有且只有一个前驱结点和一个后继结点。关系 r 是有向的,且满足全序性和单索性等约束条件n全序性是指,线性结构的全部结点两两皆可以比较前后(关系 r)n单索性是指,每一个结点 x 都存在唯一的一个直接后继结点 y。如果其他结点 z 在 y 之前,则这个 z 也一定在 x 之前,不会在x,y之间。线性结构是程序设计中应用最多的数据结构形式n数组、链表、栈、队列等都属于线性结构。树型结构树型结构树型结构简称树结构或层次结构。其关系 r 称为层次关系,或称“父子关系”、“上下级关系”等层次关系
17、中,结点被分布于多个层中。每一个结点k可以有多于一个的“直接下级”(后继结点,称为k的儿子结点),但是它最多只能有唯一的一个“直接上级”(前驱结点,称为k的父亲节点)。n没有父结点的结点称为树根(root),位于树型结构的最高层。n没有儿子结点成为叶子结点,位于树型结构的最下层。树型结构存在着很多变种,如二叉树结构,堆结构等,它们都有着各自独特的性质和应用。图结构图结构图结构有时称为网络结构。对于图结构的关系 r 没有加任何约束。图结构中允许结点具有多个“直接上级结点”或“直接下级结点”。图由结点和边组成,注意与日常生活中“图”的区别。从数学上看,树型结构和图结构的基本区别就是“每个结点是否仅
18、仅从属一个直接上级”。线性结构和树型结构的基本区别是“每个结点是否仅仅有一个直接后继”。需要注意的是,一个复杂的数据结构里可能包含一些小的数据结构(类似于C/C+语言中结构类型的嵌套定义),反映了现实世界中客观实体之间属性的包含关系。因此,在构造比较复杂的数据结构时,可以逐层分析逻辑结构,层层展开这是一种自顶向下的分析设计方法。数据的存储结构数据的存储结构数据及其关系在计算机内存里是怎么存储的呢?数据的存储结构就是各种逻辑结构在计算机中的物理存储表示计算机的主存储器的特性n计算机主存是由若干基本存储单元组成的一个连续的一维区域。每个基本存储单元都有一个非负整数型的地址编码的,从0开始连续编码。
19、一般情况下,基本存储单元是字节,8bit。0 12188bits内存是一个连续的一维空间区域计算机的指令具有按地址随机访问存储空间内任意单元的能力,并且访问不同地址所需的访问时间基本相同数一个结点自身的内部数据一般存放在内存一块连续的区域内,并称其第一个字节的地址为该结点在内存中的地址。首地址:该区域第一个字节的地址某结点的连续存储区域 “关系”在计算机内存里是怎么存储的呢?用数学映射的观点,数据的存储结构是建立一种映射:对于数据的逻辑结构(K,r),其中rRn对它的结点集合 K,建立一个从K到存储器M的映射:KM,对于每一个结点 jK 都对应一个唯一的连续存储区域c M与之对应n每一个关系元
20、组(j1,j2)r(其中j1,j2K是结点),亦即j1,j2的逻辑后继关系应映射为存储单元的地址间关系(顺序的,或指针的地址指向关系)。常用的基本存储映射方法有四种:顺序、链接、索引、散列顺序方法顺序方法 用一块无空隙的存储区域存储数据称为顺序存储。顺序存储把一组结点存储在按地址相邻的顺序存储单元里,结点间的逻辑关系用存储单元的自然顺序关系来表达 顺序存储法为使用整数编码来访问数据结点提供了便利,如数组。02136547S顺序存储结构称为紧凑存储结构,其紧凑性是指它的存储空间除了存储“有用数据”外,没有用于存储其他附加的信息。紧凑性可以用“存储密度”来度量:它是一个存储结构所存储的“有用数据”
21、和该结构(包括附加信息)占用的整个存储空间大小之比。存储密度低则空间利用率就低、空间效率差。链接方法链接方法 在结点的存储结构中附加指针域来表示存储结点间的逻辑关系,这种方法称为链接法。指针:“指示器”,一种变量单元,其值是内存单元的地址。n指针“指向”某个结点,就是令该指针的值等于这一结点的存储单元的开始地址,称为“链接”。n多个相关结点的依次链接就会形成“链索”0Xff0d结点的内存区域结点的首地址0Xff0d指向指针链接法中,数据结点由两部分组成:n数据域:存放结点本身的“有用数据”,也称为数据字段n指针域:存放后继结点的指针,也称为指针字段。两个结点的逻 辑后继关系用指针的指向来表达。
22、n如上,多个相关结点的依次链接就会形成“链索”数据域 指针域P链接法的优点:对于经常增删结点的复杂数据结构,顺序存储往往会遇到困难元素的移动很低效;链接方法结合动态存储为这些复杂问题提供了解决方法不用移动元素,只要修改结点指针的指向关系即可。链接法的缺陷:n需要额外存储指针的空间空间利用率低了。n为了访问结点集 K 中某个结点,必须使用该结点的存储指针。当不知道结点指针时,为了在结点集 K中寻找某个符合条件的结点,就要沿着链接结点的“链索”,一个结点一个结点搜索查询花费的时间多,效率低下,索引(索引(indexingindexing)方法)方法 索引法是顺序存储法的一种推广,也使用整数编码来访
23、问数据结点位置。索引方法是要建造一个由整数域 Z 映射到存储地址域D 的函数Y:ZD,把结点的整数索引值 zZ映射到结点的存储地址 dD(Y称为索引函数)从而形成一张存储了一组指针的索引表。表中的每个指针指向存储区域的一个数据结点(类似于目录)。索引方法示意索引方法示意 索引表中每一元素是指向数据结点的指针,大小一致,所以可以进行线性的索引计算:索引表S的元素Si的起始地址 元素S0的起始地址 i(指针尺寸)通过上述公式,由索引号 i 可以计算出索引表中的单元Si的始址,再通过读出Si元素的内容(即指针),访问真正需要访问的数据结点。0123数据结点1数据结点2数据结点3数据结点4索引表索引方
24、法的缺点:索引表需要额外的存储空间,空间开销大。索引方法的优点:索引提高了结点检索的效率。索引方法在程序设计中是一种经常使用的方法,其主要原因是对于非顺序的存储结构来说,使用索引表是快速地由整数索引值找到其对应数据结点的唯一方法散列方法散列方法 散列方法是索引方法的一种延伸和扩展。散列法利用一种称为散列函数(hash functions)的机制来进行索引值的计算,然后通过索引表求出结点的指针地址。散列函数是一种将给定的关键码s 映射为非负整数 z 的函数 h:S Z:对任意的 s S,散列函数 h(s)=z,z Z z即为结点的索引值。散列函数h(s)除了它取非负整数值外,关键的问题包括:n如
25、何恰当地选择散列函数,是散列函数计算出来的地址尽可能地均匀分布在构造散列表的地址空间中,并且计算效率高。n如何建造散列表n“碰撞”问题:如果两个关键码的散列函数值相同,则发生“碰撞”。当发生碰撞时,如何处理冲突,以便能找到正确的结点是散列法需要重点考虑的一个问题。抽象数据类型抽象数据类型什么是抽象数据类型?通俗地讲,抽象数据类型ADT(Abstract Data Type)就是数据和操作的封装来自于面向对象中类的概念。n数据是该抽象数据类型的数据对象,操作是施加在数据上的特定运算。nADT对外部的反映就是该类型数据能取什么值,对外提供哪些运算和操作。n如整型:整型数取整数作为其值,可以参加+、
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 算法 简介
限制150内