- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
期末复习查找、排序
第九章 查找 顺序查找的优点 算法简单,且对表的结构无任何要求,无论是用数组还是用链表来存放结点,也无论结点之间是否按关键字有序,它都同样适用。 顺序查找的缺点 查找效率低。 二分查找又称折半查找,它是一种效率较高的查找方法。 二分查找要求: 1)线性表是有序表,即表中结点按关键字有序; 2)要用数组作为表的存储结构(顺序表); 不妨设有序表是递增有序的。 二分查找的优点和缺点 虽然二分查找的效率高,但是要将表按关键字排序。 二分查找只适用顺序存储结构。为保持表的有序性,在顺序结构里插入和删除都必须移动大量的结点。 练习 1.对有序表(5,8,10,14,18,19,20)进行折半查找,则: (1)若要查找10,需要与哪些元素比较? (2)若要查找13,则需要与哪些元素比较? 2.在如下的二叉排序树中进行查找,则: (1)查找87和23,分别需要与哪些元素比较? 3.二叉排序树的插入算法 二叉排序树是一个动态查找表,树的结构不是一次形成的;而是在查找的过程中,当树中不存在这一关键字时,不断的进行插入的结果。 根据动态查找表的定义,“插入”操作在查找不成功时才进行; 第十章 排序 基本概念 排序:将一个数据元素(或记录)的任意序列,重新排列成一个按关键字有序的序列叫排序 基本概念 排序基本操作 比较两个关键字大小 将记录从一个位置移动到另一个位置 一般将待排序的存储在一个数组中 插入排序 本章复习要点 1、排序的概念,排序的分类; 2、直接插入排序、冒泡排序、简单选择排序的基本思想及算法(程序); 3、希尔排序、快速排序的基本思想及排序过程; 4、堆的判断,最大堆、最小堆的构造过程,输出堆顶元素的调整过程; 堆的定义:n个元素的序列{k1,k2,……kn} 当且仅当满足以下关系时,称为堆; 或 (i=1,2,…...?n/2?) ki?k2i ki?k2i+1 ki?k2i ki?k2i+1 若上述数列是堆,则k1必是数列中的最小值或最大值,分别称作小顶堆或大顶堆。 例 (96,83,27,38,11,9) 例 (13,38,27,50,76,65,49,97) 96 27 9 11 38 83 13 27 38 49 65 76 50 97 可将堆序列看成完全二叉树,则堆顶元素(完全二叉树的根)必为序列中n个元素的最小值或最大值 堆排序 堆排序:将无序序列建成一个堆,得到关键字最小(或最大)的记录;输出堆顶的最小(大)值后,使剩余的n-1个元素重又建成一个堆,则可得到n个元素的次小值;重复执行,得到一个有序序列,这个过程叫堆排序 堆排序需解决的两个问题: 如何由一个无序序列建成一个堆? 如何在输出堆顶元素之后,调整剩余元素,使之成为一个新的堆? 一、哈希表是什么? 以上两节讨论的表示查找表的各种结构的共同特点:记录在表中的位置和它的关键字之间不存在一个确定的关系,查找的过程为给定值依次和关键字集合中各个关键字进行比较,查找的效率取决于和给定值进行比较的关键字个数。用这类方法表示的查找表,其平均查找长度都不为零 不同的表示方法,其差别仅在于:关键字和给定值进行比较的顺序不同。 对于频繁使用的查找表,希望 ASL = 0。只有一个办法:预先知道所查关键字在表中的位置,即,要求:记录在表中位置和其关键字之间存在一种确定的关系。 哈希查找 但是,对于动态查找表而言, 因此在一般情况下,需在关键字与记录在表中的存储位置之间建立一个函数关系,以 H(key) 作为关键字为 key 的记录在表中的位置,通常称这个函数 H(key) 为哈希函数。 1) 表长不确定; 2) 在设计查找表时,只知道关键字所 属范围,而不知道确切的关键字。 实际造表时,采用何种构造哈希函数的方法取决于建表的关键字集合的情况(包括关键字的范围和形态),总的原则是使产生冲突的可能性降到尽可能地小。 三、处理冲突的方法 “处理冲突” 的实际含义是: 为产生冲突的地址寻找下一个哈希地址 1. 开放定址法 2. 链地址法 1. 开放定址法 开放地址法的主要思想是,如果由关键字得到的哈希地址产生了冲突,也就是说,该地址已经存放了数据元素,则寻找下一个空的哈希地址,只要哈希表足够大,空的哈希地址总能找到,并将数据元素存入。 开放地址法利用下列公式求“下一个”空地址。 Hi = (H(Key) + di)% m ; i= 1,2,…k(km-1) 其中H(Key)为哈希函数,m为哈希表长度,di为增量序列。 根据di的取法不同,解决冲突时可以采用不同的方法。 对增量 di 的
文档评论(0)