- 1、本文档共56页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构(上)
图(6) 生成树 当从图中任一顶点出发遍历图G时,将边集E(G)分为两个集合A(G)和B(G)。其中A(G)是遍历时所经过的边的集合,B(G) 是遍历时未经过的边的集合。显然,G1=(V,A)是图G的子图,称子图G1为连通图G的生成树。 图(7) 最小生成树-普里姆(Prim)算法 图(8) 最小生成树-克鲁斯卡尔(Kruskal)算法 图(9) 单源点最短路径 查找(1) 顺序查找-基本思想: 从表中的一端开始,逐个对记录的关键字和给定值进行比较。若找到一个记录的关键字与给定值相等,则查找成功;若整个表中的记录均比较过,仍未找到关键字等于给定值的记录,则查找失败。 查找(2) 折半查找-基本思想: 表中的元素已经按关键字有序的情况下,首先将待查的关键字key值与表r中间位置上的记录的关键字进行比较: (1) 若相等,则查找成功; (2) 若大, 下一步应在后半个子表中再进行折半查找; (3) 若小,下一步应在r的前半个子表中进行折半查找。 这样逐步缩小范围,直到查找成功或子表为空失败为止。 查找(3) 二叉排序树-性质: (1) 若它的左子树非空,则左子树上所有结点的值均小于 根结点的值; (2) 若它的右子树非空,则右子树上所有结点的值均大于 或等于根结点的值; (3) 左、右子树本身就是两棵二叉排序树. 查找(4) 二叉排序树-查找过程: 若二叉排序树非空,将给定值与根结点的关键字值进行比较。 (1) 若相等,则查找成功; (2) 若不等,则当根结点的关键字值大于给定值时,到根的左子树中进行查找;否则到根的右子树中进行查找。若找到,则查找过程是走了一条从树根到所找到结点的路径;否则,查找过程终止于一棵空树。 查找(5) 平衡二叉树: 平衡二叉树又称AVL树,它或者是一颗空树,或者是具有下列性质的二叉树;它的左子树和右子树都是平衡二叉树,且左子树和右子树的深度之差的绝对值不超过1。 查找(6) B树: 查找(7) 哈希表 根据设定的哈希函数和处理冲突的方法,将一组关键字映射到一个有限的连续地址集上,并以关键字在地址集中的“像”作为记录在表中的存储位置,这种表称为哈希表. 哈希查找 是通过一个以记录的关键字为自变量的函数得到该记录的存储地址而构造的查找。 查找(8) 哈希函数构造 直接定址法、数字分析法、平方取中法、折叠法、随机数法和除留余数法 查找(9) 处理冲突的方法 开放地址法、链地址法、再哈希法、建立一个公共溢出区 排序 分类 (1) 内部排序:指待排序记录全部存放在内 存中进行排序的过程。 (2) 外部排序:指待排记录的数量很大, 以至内存不能容纳全部记录,在排序过 程中尚需对外存进行访问的排序过程。 排序 简单排序-直接插入排序 排序 简单排序-冒泡排序 首先将第1个记录的关键字和第2个记录的关键字进行比较,若为逆序,则交换两个记录的值,然后比较第2个记录和第3个记录的关键字,依次类推,直至对n-1个记录和第n个记录的关键字进行比较为止。上述过程称作第一趟冒泡排序,其结果是关键字最大的记录被安置到第n个记录的位置上。然后进行第二趟冒泡排序,对前n-1个记录进行同样的操作,其结果是关键字次大的记录被安置到第n-1个记录的位置上。当进行完第n-1趟冒泡排序时,所有记录都已有序排列。 排序 简单排序-简单选择排序 通过n-i次关键字之间的比较,从n-i+1个记录中选出关键字最小的记录,并和第i(1≤i ≤n)个记录进行交换,当i等于n时所有记录都已有序排列。 排序 希尔排序 排序 快速排序 通过一趟排序将待排记录分割为独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小,然后再分别对这两部分记录继续进行排序,以达到整个序列有序。 排序 快速排序 具体做法是:附设两个指针low和high,它们的初值分别指向文件的第一个记录和最后一个记录。设枢轴记录(通常是第一个记录)的关键字为pivotkey,则首先从high所指位置起向前搜索,找到第一个关键字小于pivotkey的记录并与枢轴记录互相交换,然后从low所指位置起向后搜索,找到第一个关键字大于pivotkey的记录并与枢轴记录互相交换,重复这两步直至low=high为止。 排序 堆排序 排序 堆排序 基本思想:对一组待排序记录的关键字,首先把它们按堆的定义排成一个堆序列(即建立初始堆),从而输出堆顶的最小关键字(对于小根堆而言),然后将剩余的关键字再调整成新堆,便得到次小的关键字,如此
文档评论(0)