收藏 分享(赏)

数据结构与算法数据结构.pdf

上传人:HR专家 文档编号:11587857 上传时间:2020-07-15 格式:PDF 页数:5 大小:317.30KB
下载 相关 举报
数据结构与算法数据结构.pdf_第1页
第1页 / 共5页
数据结构与算法数据结构.pdf_第2页
第2页 / 共5页
数据结构与算法数据结构.pdf_第3页
第3页 / 共5页
数据结构与算法数据结构.pdf_第4页
第4页 / 共5页
数据结构与算法数据结构.pdf_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

1、1 高等数据结构与算法 图 1 最小 - 最大堆 a . 我们如何找到最小元和最大元? b . 给出一个算法将一个新节点插入到该最小 - 最大堆中。 答:( a )最小元即为根节点 A ,最大元即为 A 的左右孩子中的较大值; ( b )假设插入节点为 t , 此堆的根节点记为 P ,其中 P - n e x t 表示 P 的 孩子, P - d a t a 表示节点 P 所储存的值。 算法: t 自根节点向下合并,每一次与节点比较后,从新赋值的 t 向右路径继续向下合并,直到其不 再遇到节点为止(即最终的 t 成为叶子节点)。 ( 1 ) t = m a x t , P - d a t a

2、,此时 P - d a t a = m i n t , P - d a t a , P = P - n e x t ; ( 2 ) t = m i n t , P - d a t a ,此时 P - d a t a = m a x t , P - d a t a , P = p - n e x t ; ( 3 ) 顺序重复上面两个步骤,当 P = N U L L ,将 t = P - d a t a , 结束。 答:左式堆的任意节点作为根节点都是左式堆,合并的时候以右路径为突破口,尽量不破坏左部的良好特 性。 基本方法:( 1 )将合并堆的两根节点进行比较,较大的与较小根结点的右孩子合并。 2

3、 ( 2 )较小堆的右分支与先前合并进来的堆仍然是两个左式堆,递归调用( 1 )直到输出 结果 ( 在这里 , 当所比较的根节点中较小的如果没有右孩子 , 其较大的根节点带着堆 就充当了较小根节点的右分支,递归结束)。 输出结果: 答:问题相当于 “ 给出某一数组,其中仅含有 0 , 1 , 2 三种元素,请按升序排列 ” 这一问题。现设此数组 为 a n ; 算法: 1 . 从 i = 0 : n - 1 ,逐一检查 a i , 当其为 0 时, i + + ; 当其不为 0 时,令 j = i , 从 j = i + 1 : n 中找到第一个零 元 a x , 利用中间变量 t 将 a x

4、 与 a i 交换顺序,并记下此时的 j 值,同时退出小循环。 2 . 遍历 i 值,直到所有的零元被安放在数组的前部; 3 . 寻找到第一个不是零元的下标 i , 此时和前面的方式一样 , 只不过其条件改为是否为 1 , 从而将后 面的数组也能够排列好。 算法复杂度分析:大循环中虽然嵌套了小循环,但由于小循环 j 值起点为上次循环终止的后继,终点为找 到所需 0 元的下标 + 1 (实际上就是下一次小循环的起点),故而实际上其算法复杂度应为 O ( N ) , 第三部的 算法复杂度同样为 O ( N ) , 则此算法符合题意。 程序代码: # i n c l u d e u s i n g

5、n a m e s p a c e s t d ; i n t k e y w o r d ( i n t , i n t i n t a 1 5 , n ; i n t m a i n ( ) i n t i , k = 0 ; i n t j = 0 ; i n t m = 0 ; 3 i n t l = 0 ; c o u t n ; c o u t a i ; f o r ( i = 0 ; i n ; i + + ) i f ( a i ! = 0 ) m = m + 1 ; i f ( m = = 1 ) j = i ; k e y w o r d ( i , j , 0 ) ;

6、e l s e k e y w o r d ( i , j , 0 ) ; f o r ( i = 0 ; i n ; i + + ) i f ( a i ! = 0 ) k = i ; b r e a k ; f o r ( i = k ; i n ; i + + ) i f ( a i ! = 1 ) l = l + 1 ; i f ( l = = 1 ) j = i ; k e y w o r d ( i , j , 1 ) ; e l s e k e y w o r d ( i , j , 1 ) ; c o u t 最终结果: ; f o r ( i = 0 ; i n ; i +

7、+ ) c o u t a i ; 4 r e t u r n 0 ; i n t k e y w o r d ( i n t i , i n t f o r ( x = j + 1 ; x n ; x + + ) i f ( a x = = c ) y = a i ; a i = a x ; a x = y ; b r e a k ; j = x ; r e t u r n j ; 运行结果: 答: 使用回溯法,把有向图用邻接表表示,根据上面给图中每条边的流量空间为剩余流量空间,初始 化整个图的最大流量 m a x 为 0 ,首先计算从源节点出发所有路的流量总和和汇合到终点 T 的所有路的流

8、量 5 的总和,用穷举法遍历所有的从源节点 S 到目的节点 T 且每条边的剩余流量空间大于 0 的路径,到找到一 条从源节点到目的节点的路径,比较这条路径中的每条边的剩余流量中最小值,找出这条路径的瓶颈 值 n e c k ,这条路径以该瓶颈值大小的流量在这条路上从源节点 S 流到终点 T ,相应把这条路径上的每条边上 剩余流量空间减去这个瓶颈值作为每条边的当前的剩余流量空间 , 且 m a x = m a x + n e c k 继续寻找 , 直到找不 到符合条件的路径为止。最后得出这个图的最大流量为 m a x . S A B C T 1 ; S D E F T 1 ; S D A B C T 1 ; S G H E F T 2 ; S D E C T 2 ; S G H I T 4 ; 所以这个图最大流量是 1 1 . 答: 先将单词按值从小到大排列: I a a n d i t o r 。 二叉查找树的规则 : 如果有左子树 , 则左子树的值小于根节点的值 , 如果有右子树 , 则右子树的值大于根 节点的值。 概率大的单词尽量往根节点排。 在满足二叉树及概率大的单词尽量往根节点排这两个要求的最优二叉数如下: an d i t ora I

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 网络科技 > 计算机原理

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报