- 1、本文档共577页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
8.1 查找的基本概念 查找:是指在给定的数据集合中根据条件查找某一特定的数据元素。 查找表:是待查找范围的数据集合。 静态查找:查找过程中只需确定查找表中存不存在某元素,而不需要向表中插入或删除元素。 动态查找:查找过程中需要向查找表中插入或删除元素。 8.1 查找的基本概念 查找可能有两种结果:查找成功和失败。如果在查找表中找到相应值,则查找成功,返回对应值在表中的位置;反之,查找失败,返回失败信号。 衡量查找算法优劣的的重要指标是平均查找长度(Average Search Length)。即记录的关键字和给定值进行比较的次数。另外,衡量一个查找算法还要考虑算法所需要的存储量和算法的复杂性等问题。 8.2 顺序表查找 顺序表指的是线性表的顺序存储结构,元素间不存在递增(减)排列,查找方法通常采用顺序查找。 查找过程为:从表中第一个(或最后一个)数据元素开始,逐个将其关键字和给定值key比较,若某个元素的关键字和key相等,则查找成功,将该元素的在表中的位置返回;若表中所有元素的关键字均不和key相等,表明表中不存在所查数据,查找失败。 8.2 顺序表查找 优化算法中:在查找比较前,先将待查值存放在查找表的第一个位置,在for结构中,省掉了在查找过程中每次都要判断查找表是否结束。实践测试证明,优化算法的执行时间要比原始算法的执行时间要快,如果查找表很长,优化算法的好处就更明显了。 8.2 顺序表查找 从以上的顺序查找过程来看,若第一个元素的关键字和给定值相等,则查找过程中只需比较一次,若最后一个元素的关键字和给定值相等,则查找过程需比较n次。 一般情况下Ci=i。若每个元素的查找概率相等,即Pi= 。由此分析得出顺序查找成功时的平均查找长度为: ASL= = (1+2+3+.…+n) = 查找不成功时的比较次数为 n+1。 8.3 有序表查找 如果顺序查找表的各元素间存在递增(减)排列结构,再采用顺序查找某些元素,效率低下,本节里介绍的这些查找方法主要针对有序递增的查找表,其优劣不尽相同。下面分类介绍。 邻接多重表(adjacent multiList)是无向图(网)的另一种链式存储结构。 (a)顶点结点 (b)邻接多重表的表结点 图7-15 图的邻接多重表存储方式的结点结构图 图7-16 无向图的邻接多重表存储结构 7.3.2 十字链表与邻接多重表 7.3 图的存储结构 图7-17 有向网的边集数组存储结构 7.3.3 边集数组 7.3 图的存储结构 7.4 图的遍历 图的遍历是树的遍历的推广,是指从图中的某个顶点出发, 按照某种顺序访问图中的每个顶点,使每个顶点被访问一次 且仅一次,亦是将网络结构按某种规则线性化的过程。 图的遍历是图的一种基本操作,图的许多其他操作都是建立 在遍历操作的基础之上的。 7.4.1 深度优先遍历 7.4.2 广度优先遍历 7.4 图的遍历 深度优先遍历(depth first search,DFS),类似于树的先根遍历。设初始化时,图中各顶点均未被访问,从图中某个顶点vi出发,访问vi,然后搜索vi的一个邻接点vj,若vj未被访问则访问之,再搜索vj的一个邻接点(深度优先)。若某顶点的邻接点已经全部访问完毕,则回溯(backtracking)到它的上一顶点,然后再从此顶点按深度优先的方法搜索下去,直到能访问的顶点都访问完毕为止。 7.4.1 深度优先遍历 7.4 图的遍历 深度优先遍历(depth first search,DFS),类似于树的先根遍历。设初始化时,图中各顶点均未被访问,从图中某个顶点vi出发,访问vi,然后搜索vi的一个邻接点vj,若vj未被访问则访问之,再搜索vj的一个邻接点(深度优先)。若某顶点的邻接点已经全部访问完毕,则回溯(backtracking)到它的上一顶点,然后再从此顶点按深度优先的方法搜索下去,直到能访问的顶点都访问完毕为止。 7.4 图的遍历 7.4.2 广度优先遍历 7.5 最小生成树 (a)无向图G
文档评论(0)