若对大小均为n的有序顺序表和无序顺序表分别进行顺序查

上传人:豆浆 文档编号:31946318 上传时间:2018-02-09 格式:DOC 页数:5 大小:232KB
返回 下载 相关 举报
若对大小均为n的有序顺序表和无序顺序表分别进行顺序查_第1页
第1页 / 共5页
若对大小均为n的有序顺序表和无序顺序表分别进行顺序查_第2页
第2页 / 共5页
若对大小均为n的有序顺序表和无序顺序表分别进行顺序查_第3页
第3页 / 共5页
若对大小均为n的有序顺序表和无序顺序表分别进行顺序查_第4页
第4页 / 共5页
若对大小均为n的有序顺序表和无序顺序表分别进行顺序查_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

《若对大小均为n的有序顺序表和无序顺序表分别进行顺序查》由会员分享,可在线阅读,更多相关《若对大小均为n的有序顺序表和无序顺序表分别进行顺序查(5页珍藏版)》请在金锄头文库上搜索。

1、第九章 查找9.1 若对大小均为 n 的有序顺序表和无序顺序表分别进行顺序查找,试在下列三种情况下分别讨论两者在等概率时平均查找长度是否相同?(1)查找不成功,即表中没有关键字等于给的值 K 的记录;(2)查找成功,且表中只有一个关键字等于给定值 K 的记录;(3)查找成功,且表中有若干关键字等于给定值 K 的记录,要求找出所有这些记录。答:(1)相同,有序 n+1; 无序 n+1(2)相同,有序 ;无序12n(3)不相同,对于有序表,找到了第一个与 K 相同的元素后,只要再找到与 K 不同的元素,即可停止查找;对于无序表,则要一直查找到最后一个元素。9.3 画出对长度为 13 的有序表进行折

2、半查找的判定树,并分别求其等概率时查找成功和查找不成功的 ASL。答:查找成功: 141(236)33ASL查找失败: (P220:查找不成功的过程就是走了一条从根节点到65*47外部节点的路径,和给定值进行比较的关键字个数等于该路径上内部结点个数)注:在折半查找判定树中,查找不成功 时的比较次数即是查找相应外结点时与内结点的比较次数。整个判定树代表的有序表在查找失败时的平均查找长度即为查找每个外结点的比较次数之和除以外结点的个数。例如,长度为10的有序表在查找失败时的平均查找长度为:ASL=(35+46)/11=39/11第二次作业9.4 已知如下所示长度为 12 的表(Jan, Feb,

3、Mar, Apr, May, Jun, July, Aug, Sep, Oct, Nov, Dec)每个元素的查找概率分别为(0.1,0.25,0.05,0.13,0.01,0.06,0.11,0.07,0.02,0.03,0.1,0.07)(1) ,Pi 为查找表中第 i 个记录的概率,1niASLPC1niPASL=0.1+0.25*2+3*0.05+4*0.13+5*0.01+6*0.06+7*0.11+8*0.07+9*0.02+10*0.03+11*0.1+12*0.07=5.43或者 ASL=12*0.1+11*0.25+10*0.05+9*0.13+8*0.01+7*0.06+6

4、*0.11+5*0.07+4*0.02+3*0.03+0.1*2+0.07=7.57(2)画出初始为空,依次插入结点,生成的二叉排序树(3)该二叉排序树查找成功的平均查找长度。ASL=0.1+2*(0.25+0.05)+3*(0.13+0.01+0.06)+4*(0.11+0.07+0.02)+(0.03+0.07)*5+6*0.1=3.2(4)将二叉排序树中的结点 Mar 删除,画出经过删除处理后的二叉排序树方法(1)方法(2)9.5 在地址空间为 016 的散列区中,对以下关键字序列构造两个哈希表:(Jan,Feb,Mar,Apr,May,Jun,July,Aug,Sep,Oct,Nov,

5、Dec)(1)用线性探测开放定址法处理冲突;(2)用链地址法处理。分别求这两个哈希表在等概率情况下查找成功和不成功时的平均查找长度。设哈希表函数为 H(x)=i/2 ,其中 i 为关键字中第一个字母在字母表中的序号。(1)线性探测法当发生冲突时,线性探测法从冲突位置的下一个位置起,依次寻找空的散列地址,即:Hi=(H(key)d i) % m (d i=1,2,m -1) 。0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 Apr Aug Feb Dec Jan Jun Mar May July Sep Oct Nov 等概率情况查找成功的 ASL=(5*1+3

6、*2+5+4+6+3)/12=29/12 查找不成功的 ASL 定义:查找不成功是需和给定值进行比较的关键字个数的期望值。等概率情况查找不成功的 ASL=(13+12+1+4*1 )/17=95/17 (2)拉链法(链地址法)用拉链法处理冲突构造的散列表叫做开散列表等概率情况查找成功的 ASL=(7*1+3*2+2*3)/12=19/12 等概率情况查找不成功的 ASL=(10*1+4*2+1*3+2*4)/17=29/17 9.7 写出判断一棵二叉树是否是二叉排序树的算法,设二叉排序树中不存在关键字值相同的结点二叉排序树定义如下,二叉排序树或者是一棵空树;或者是具有下列性质的树。1,若它的左

7、子树不空,则左子树上所有结点的值均小于它的根结点的值 2,若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值 3,它的左右子树也分别为二叉排序树 int last=0,flag=1; int Is_BSTree(Bitree T)/判断二叉树 T 是否二叉排序树 ,是则返回 1,否则返回 0if(T-lchildif(T-datadata;if(T-rchildreturn flag;/Is_BSTree 根据递规定义,如下的递规算法: typedef struct node01234567891 01 11 21 31 41 51 6A p r A u g D e c F e b

8、J a nJ u n J u l y O c t S e p M a rM a y N o v datatype data; struct node left,right;NODE,*TREE; int IsBST0(TREE t, int *pmax, int *pmin) int max, min; if(!t-left) *pmin=t-data; else if(!IsBST0(t-left,&max,&min) return 0;if(maxt-data) return 0; *pmin=min; if(!t-right) *pmax=t-data; else if(!IsBST0(t-right,&max,&min) return 0; if(mint-data) return 0; *pmax=max; return -1; int IsBST(TREE) int max,min; if(!t) return -1; else return IsBST0(t,

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号