- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
例:如HT表中,已填有关键字分别为18,63,,23的记录(哈希函数为f(x)=x mod 11),现在又第四个记录,关键字的值为38和30,采用线性探测的方法将38插入到HT表中。 溢出区法 在线性探测法中,会出现结点“堆积”现象,增加冲突发生的概率。溢出区法则另外开辟一个新的存储空间,把发生冲突的结点顺序的插入到溢出区中去,所以溢出区法将散列表分成了基本区和溢出区。 例:某散列表中的基本长度为5,其区间中放入了3条记录r1,r2,r3,而溢出区长度为4。现在要放入新记录r4,新记录r4的关键字经过哈希函数计算出来的哈希地址为3,但基本区中的3好位置已有关键字,则将新记录r4放入溢出区的第一个地址中,如下图所示。 链地址法 链地址法的基本思路是:把相同散列地址的结点链接在同一个链表中,从而形成n条链。或者当哈希表中相应位置为空时,直接存放;当哈希表中相应位置为非空时,用链表连接。 例:已知6个记录的关键字的值为{6,12,15,38,44,55},试构造哈希表来存放着6个记录,采用除留余数法,解决哈希冲突链表问题。 实训项目--折半查找算法的应用 【实训】折半查找算法的应用 1.实训说明 掌握各种基本查找方法,比较几种基本查找方法的局限性和优劣性,能熟练应用到实际应用中,并写代码实现。 程序编写:编写一个函数,利用折半查找算法在一个有序表中插入一个元素x,并保持表的有序性。 实训项目--折半查找算法的应用 【实训】折半查找算法的应用 2.算法分析 在有序表T中,有一组元素{3,5,47,58,69,73,88},采用折半查找算法查找关键字等于或小于55的元素,m正好指向等于55的元素或指向正好大于55的元素,插入x即可。 3.源程序(见教材)。 本章小结 本章我们学习了有关查找的基本内容,了解了查找的相关概念,如查找、关键字、平均查找长度、有序表、哈希表、哈希函数等,还学习了查找的方法,如顺序查找、折半查找、分块查找和哈希法,并学习了这些算法的限制条件和优劣性,便于我们在具体情况,选择使用这些查找方法。 查找算法比较 查找算法没有绝对的好与坏,每种算法都有自己的优劣,也有自身的局限性。以下是4种查找方法的比较见教材。 1.设有一组关键字序列{34,56,67,344,26,67,89,23,78,98,5,6,38,47,29,4},当用折半查找算法查找关键字5,29,38时,其比较次数分别是多少? 2.设单链表的结点是按关键字从大到小顺序排列的,试写出对此链表的查找算法,并说明是否可以采用折半查找。 3.已知关键字集合{5,46,24,67,97,3,64,53,28,59,18,9,4},按平均查找长度ASL最小的原则,画出分块存储示意图。 4.什么是哈希表?什么是哈希函数?哈希法中为什么会出现冲突? 数据结构(C#) 在用弗洛伊德算法求最短路径时,为方便求出中间经过的路径,设置二维数组path[n,n],其中path[i,j]是相应路径上顶点j的前一顶点的顶点号。 例:有向带权图G13,用佛洛伊德算法求顶点对的最短路径。 7.6 拓扑排序 拓扑排序(Topological Sort),是图的一个重要的应用,在实际工程或任务进行时应用非常广泛。比如大型工程的施工或生产作业流程,常常需要划分成若干个工作任务和工作流程,有的任务要先后作业,有的任务要并行作业,这些任务之间的先后顺序可以借助有向图来表示:顶点表示任务,有向边表示任务之间的先后顺序,我们把这种图叫做活动的图(Active On Vertex Network),简称AOV网。 在AOV网中,若从顶点Vi到顶点Vj之间存在有向边,则称Vi是Vj的前驱,Vj是Vi的后继。若Vi,Vj是AOV 网中的弧,则称Vi是Vj的直接前驱,Vj是Vi的直接后继。 7.6 拓扑排序 例:如下表购物网站操作流程的先后顺序,有的操作可以先进行,有的操作要后进行,如何用AOV网表示这些操作之间的关系。 购物网站操作流程 实训项目 【实训】图的遍历 1.实训说明 涉及图的操作的算法通常都是以图的遍历操作为基础的。试写一个程序,演示无向图的遍历操作。要求以邻接表为存储结构,实现连通无向图的深度优先和广度优先遍历。以用户指定的结点为起点,分别输出每种遍历下的结点访问序列和相应生成树的边集。 实训项目 2.程序分析 设图的结点不超过30个,每个结点用一个编号表示(如果一个图有n个结点,则它们的编号分别为1,2,…,n)。通过输入图的全部边输入一个图,每个边为一个数对,可以对边的输入顺序作出某种限制。(如下图所示) 实训项目 本实训实现的是图的基本算法,即图的生成及遍历,以此为基础可以得到图的其它复杂算法。
文档评论(0)