第五章-数据结构基础 (1).ppt

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

5.4.3图的遍历和生成树2.广度优先遍历访问图G=(V,E)中结点V0,然后访问与V0相邻接的所有未被访问过的结点V1、V2、…、Vk,然后再依次访问与V1、V2、…、Vk,相邻接的所有未被访问过的结点,如此一直进行下去,之至所有结点均被访问遍历为止。其他情况与深度优先遍历类似。图5-28是图5-26有向图和无向图的广度优先遍历结点序列和广度优先遍历生成树:(a)从结点①出度的遍历序列:①、②、④、⑤、⑥、③、(b)从结点①出度的遍历序列:①、②、③、④、⑤、⑥、⑦、⑧(a)有向图广度优先遍历生成树(b)无向图广度优先遍历生成树5.5内部排序按规定的顺序将一组数据重新排列称为排序(或分类)。排序过程中文件放在内存处理的称为内部排序;如果排序过程中还要使用外存的称为外部排序。这里介绍的是内部排序。如果待排序文件中存在多个相同关键码的记录,经过排序后这些记录原来的相对次序仍保持不变的,称这种排序算法是稳定的,否则称为不稳定的。排序有广泛的应用,下面介绍几种常用的排序方法。5.5.1简单插入排序简单插入排序是插入排序的一种。它是将待排序的数据逐一取出,与已排序数据进行比较,并插在适当的位置。第i次插入时,a[1]、a[2]、…、a[i—1]已排序好。取出a[i],在1到i的范围为其找一个合适的位置j,将从a[j]到a[i-1]的数据依次后移一个位置,在空出来的位置j上插入原来的a[j]。例如,现有待排序记录8个,它们的关键分别为7、5、4、9、1、6、3、2。从i=2开始经过七步插入即可完成排序。图5-29表示直接插入的处理过程。5.5.2简单选择排序简单选择排序是选择排序的一种。该排序十分简单。首先从所有待排序记录选出关键码最小的记录,将其与第1个记录交换,然后在其余未排序的记录中选出关键码最小的记录,将其与第2个记录交换位置。如此反复进行,直到全部记录排完序为止。图5-30给出这种排序方法的示例。5.5.3冒泡排序冒泡排序是交换排序的一种。该排序方法是:从底部开始,反复地从下向上比较相邻的数据,如果a[i]a[i-1],则交换,既小的数据向上浮。第一遍比较后,最小的数据浮到最上面。第二遍继续从下向上逐个比较,将次最小的浮到a[2]的位置。如此反复进行直到所有数据均排好序为止。图5-31给出了冒泡排序示例。5.6检索检索又称查找,是从一大堆数据中按某种方式找出所需内容的过程。检索是数据处理中常用的一种重要运算。检索的结果有两种可能:检索失败,就是在数据结构中不存在满足条件的结点;检索成功,就是在数据结构中找到了满足条件的结点。在日常生活中,查找信息是人们一项非常频繁且重要的活动。例如,在通讯录中查找某个人的电话号码和地址,或在字典中查找某个词的读音和词义。在信息时代,我们将大量的信息存储在计算机系统中,如何快速、准确的查找到我们需要的数据也是非常重要的。在计算机检索过程中,我们使用的数据结构称为查找表。所谓查找表,就是同一类型的数据(或记录)组成的集合。下面介绍几种常用的检索方法。5.6.1顺序检索这是一种最简单的检索方法。检索时用待查的关键码与给定数据结构中各结点的关键码依次比较,直到找出相应的结点则检索成功,或找遍所有结点都没有相应的结点则检索失败。顺序检索时存储表示可以是顺序的,也可以是链式的,对查找表中结点之间没有排序的要求。例如,已知一组由10个数据元素组成的查找表为: (13,41,23,15,19,33,28,06,55,37)现在要用顺序检索法查找关键字为33和66的数据元素。根据顺序检索方法,第一步取出查找表中的第一个元素13与关键字33做比较,得到的结果为不相等,第二步,顺序地取第二个元素41与关键字33比较,……,以此类推,直到取到第六个元素33,它与关键字相同,然后输出结果为:6,即目标关键字在查找表的位置为6。5.6.1顺序检索关键字33的顺序查找过程如图5-32所示。5.6.1顺序检索顺序检索关键字66的过程和检索33的方法完全一致。但是我们会发现顺序比较之后,查找表中不能找到与关键字66相同的数据,此时遍历的指针应该是指向查找表中最后一个数据之后的位置。这个值并不是一个特殊值,它会根据查找表中元素个数的不同而不同,而且如果要区分出这个返回值是指关键字所在的位置,或是指关键字不存在,还需要与查找表中数据元素的个数做比较。因此,改进的算法在顺序检索遍历开始时,会设置一个“哨兵”位置,即位于第一个元素之前的0号位置,如果遍历完查找表之后不能找到与关键字匹配的元素,则返回值为0,这样对于数据个数不同的查找表,如果返回值为0就意味着检索失败。5.6.1

文档评论(0)

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

科技工作者

1亿VIP精品文档

相关文档