- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
七、搜索(5) 3.二叉搜索树 Final Review 删除二叉搜索树中的结点:首先执行搜索,若找不到关键字值,就不必进行删除;否则,根据该结点的度的情况决定是否可以直接删除该结点。 如果被删除结点的度小于2,可直接将其删除,然后由空指针或其惟一的孩子替代该结点。 如果被删除结点的度等于2,就在其左子树中寻找其中序遍历下的直接前驱(或在其右子树中寻找其中序遍历下的直接后继),将该结点的数据拷过来(逻辑删除),然后再删除该结点(物理删除)。 七、搜索(6) 4.AVL树 Final Review AVL树就是平衡二叉搜索树。树中每个结点的平衡因子的绝对值不大于1。所谓平衡因子,就是该结点的右子树的高度减去左子树的高度。 在AVL树中插入或删除结点的第一步操作,与在普通二叉搜索树上的操作相同。此后,要从发生操作的位置开始向根结点回溯,一旦发现某个结点的平衡因子失衡,就要进行调整。 调整操作总是挑选较高的那棵子树进行的。调整操作有两种类型:单旋操作和和双旋操作。双旋操作是由连续的两次单旋操作组合而成的。 在AVL树中插入新结点时,最多只要一步调整就可回复平衡;而删除结点时肯能要进行多次调整。 七、搜索(7) 5.散列表 Final Review 散列表的基本思想是利用元素关键字的值计算其在结构(数组)中的存储位置(下标)。 常见的散列函数有:除留余数法、平方取中法、分段法、数字分析法等。 常用的散列化方法(冲突调节法)有:拉链法、线性探测法、二次探测法、双散列法等。 线性探测法容易产生线性聚集,二次探测法也会产生二次聚集。而双散列法可以均匀地遍历散列表的所有地址,且对于不同的key值探测序列也很不同,这样就有效减少了二次冲突的发生。所以双散列法是开放定地址法中最好的方法之一。 八、排序(1) 1.排序的概念 Final Review 排序是将一个数据元素的序列调整为按指定关键字值的递增(或递减)次序排列的有序序列。 如果待排序元素总数相对于内存而言较小,整个排序过程可以在内存中进行,则称为内部排序;反之,如果待排序元素总数较多,不能全部放入内存,排序过程需访问外存,则称为外部排序。 如果一个排序算法需要进行大量的元素交换,就不适合用来做外部排序,因为在外存中做元素交换的开销较大。 序列中两个元素Ri和 Rj (ij),且 Ki=Kj,排序后, Ri 仍然排在 Rj 之前,则称所用的排序算法是稳定的。反之,称该排序算法是不稳定的。 八、排序(2) 2. 简单排序算法 Final Review 三种简单排序算法:简单选择排序、直接插入排序、冒泡排序。三种算法的时间复杂度最坏情况下均为O(n2)。 直接插入排序也必须经过n-1趟扫描,每趟扫描最坏要经过i次比较,最好只需经过1次比较,每趟扫描最坏需要移动元素i+2次,否则为:比较次数+1。 冒泡排序是一种交换排序,每次将当前子序列中最大的元素交换到尾部。最好情况下只需一次扫描就可完成排序。 简单选择排序必须经过n-1趟扫描,每趟扫描必须经过n-i次比较,每趟扫描只需进行一次数据交换。待排序序列的初始状态不会影响排序过程。 八、排序(3) 3. 快速排序 Final Review 快速排序算法一般用递归方式来实现。 经过每一趟排序后,若初始序列被分割成两个大小相近的子序列时,快速排序的效率最好,时间复杂度为O(nlog2n);反之,若每次分割的两个子序列中有一个为空,即初始序列有序(顺序或逆序),则效率最低,时间复杂度为O(n2)。 通常取待排序子序列的首元素作为分割元素。设立左右两个指针i和j,分别指向待排序子序列的头和尾。在i和j相互靠拢的过程中,始终保持i左边的元素小于等于分割元素而j右边的元素大于等于分割元素。i与j会和时完成单趟扫描。 八、排序(4) 4. 二路归并排序 Final Review 二路归并排序的执行效率与待排序序列的初始状态无关,算法时间复杂度为O(nlog2n)。但它必须借助一个与原序列等大小的辅助数组方能实现。 二路归并排序用循环来实现,在第i(i0)趟扫描中待归并的子序列的长度为2i-1,因此一共要进行?log2n?趟扫描。 二路归并排序通过两两合并若干组有序的子序列来实现排序。在实现上,函数Merge()用来将两个有序的子序列合并成一个序列。 九、图(1) 1. 图的基本概念 Final Review 在有向图中,以某个顶点为起点的边的数目称为该顶点的出度,以其为终点的边的数目称为该顶点的入度。无向图的顶点的度是指与该顶点相关联的边的数目。 路径由首尾连续相接的边构成。如果除了起始顶点和终止顶点外,路径上的所有顶点各不相同,则称该路径为简单路径。回路是起点和终点相同的简单路径。 图由顶点及连接顶点的边构成。图可分为有向图和无向图。无回路的连通无向图对应于一
文档评论(0)