- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
计算机软件技术基础第4讲(第三章)
* 在此页中进行说明,Hash表的定义中H定义为:0=H=n,即包含0。 * M就是Hash表的长度,一般取为素数 * 与线性Hash相对比,后者在Hash中直接存放关键字k,而前者在Hash中存放k所在结点的指针。 * M就是Hash表的长度,一般取为素数 * M就是Hash表的长度,一般取为素数 * M就是Hash表的长度,一般取为素数 * M就是Hash表的长度,一般取为素数 * M就是Hash表的长度,一般取为素数 * M就是Hash表的长度,一般取为素数 * 第3章 查找与排序技术 拉链哈希表: 分为外链哈希表和内链哈希表。外链哈希表主要由Hash表和表外结点组成。在Hash表中登记的不是关键字k,而指示登记指针。所有的关键字及其有关信息分别登记在表外各节点中,并且每一个表外结点还含有一个指针域,用于链接Hash码相同的各结点 指标哈希表: 包括指标表和内容表两部分。在指标Hash表中,所有的关键字k及相关信息被登记在内容表中。指标表指示对应关键字信息在内容表中的地址 * 拉链Hash表 拉链法也称链地址法,是把相互发生冲突的同义词用一个单链表链接起来,若干组同义词可以组成若干个单链表。 是一种最常用又最有效的Hash表。 拉链Hash表由Hash表和表外结点构成。 Hash表中登记指针,所有的关键字k及其有关信息登记在表外结点中。 Hash表的第H项登记着Hash函数为H(k)的所有关键字的表外结点。 * 拉链Hash表的举例 Eg.关键字序列 (09,31,26,19,01,13,02,11,27,16,05,21) 将上例的关键字序列填入n=12的拉链Hash表中,Hash函数为 H=INT(k/3)。 * 拉链Hash表的填入 设数组A(1:n)为Hash表存储空间,其初始为A(i)=0;则填入步骤: 计算关键字k的Hash函数H=H(k); 取得一个新结点p,并将k及相关信息填入结点p。 将结点p链入以 A(H)为头指针的链表。 拉链Hash表的取出 计算关键字k的Hash函数H=H(k); 在H(k)为头指针的链表中顺序查找关键字为k的结点。若找到,则从结点中取出该元素。 拉链Hash表 * 排序 排序——将一个无序序列整理成按值非递减顺序排列的有序序列。 排序可以在不同的存储结构上实现。 基本排序是在顺序存储的线性表中实现的; 二叉排序树利用二叉树的链式存储结构实现无序表的有序化。 三种基本排序方法: 交换排序 (如 冒泡排序和快速排序); 插入排序 (如 简单插入排序和希尔排序); 选择排序 (如 简单选择排序和堆排序); * 交换排序 交换排序的基本思想: 两两比较待排序记录的关键值,并交换不满足顺序要求的偶对,直至全部满足为止。 交换排序的两种形式 冒泡排序 快速排序 * 3.3 基本的排序技术 3.3.1 冒泡排序与快速排序 冒泡排序通过相邻数据元素之间的相互交换进行排序的一种方法 通过对待排序序列从后向前(从下标较大的元素开始),依次比较相邻元素的排序码,若发现逆序则交换,使排序码较小的元素逐渐从后部移向前部(从下标较大的单元移向下标较小的单元),就象水底下的气泡一样逐渐向上冒。 * 3.3 基本的排序技术 冒泡排序的基本过程 (1)从表头开始往后扫描线性表,在扫描过程中逐次比较相邻两个元素的大小。若相邻两个元素中前面的大于后面的元素,则将它们互换(称消去了一个逆序),这样不断地将相邻两个元素中的大者往后移动,最后将线性表中的最大者换到了表的最后 (2)然后,从后向前扫描剩下的线性表,在扫描过程中逐次比较相邻两个元素的大小。若相邻两个元素中前面的小于后面的元素,则将它们互换(又消去了一个逆序),这样不断地将相邻两个元素中的小者往前移动,最后将剩下线性表中的最小者换到了表的前面 最坏情况下的时间复杂度(工作量)为O(n(n-1)/2). 例如,n=6,数组R的六个排序码分别为:17,3,25,14,20,9。下面用图9-3给出冒泡排序算法的执行过程。 第四趟排序过程中,没有进行过交换记录的操作,故判定该冒泡排序结束。 3.3 基本的排序技术 注意 冒泡排序适用与元素基本有序,且n比较小的时候,元素的排列情况对冒泡排序的效率影响很大。当元素以正序排列时,整个过程只进行一趟排序,经过n-1次关键字比较后排序便宣告结束。当元素以逆序排列时,整个过程要进行n-1趟排序,经过n·(n-1)/2次关键字的比较,时间复杂度为o(n^2)。 3.3 基本的排序技术 * 3.3 基本的排序技术 快速排序基本思想
您可能关注的文档
- 《登高》1.14.ppt
- 房产新闻汇总8.19--8.25.pptx
- 07-11年高考真题分课汇编:5-1 新中国初期的外交(必修一).doc
- 07-11年历史高考真题分课汇编(人民版必修一):9-3 多极化趋势的加强.doc
- 运筹学11___清华大学课件.ppt
- 20111110马克住区开盘方案(11.19)(终).doc
- 医嘱录入使用手册修改版2011.11.19.doc
- 07-11年历史高考真题分课汇编(人民版必修一):9-2 新兴力量的崛起.doc
- 07-11年历史高考真题分课汇编(人民版必修一):9-1 美苏争锋.doc
- vSphere 4系列之十一:使用VMware vCenter Converter迁移到虚拟机.docx
文档评论(0)