第9章 查找答案.doc_第1页
第9章 查找答案.doc_第2页
第9章 查找答案.doc_第3页
第9章 查找答案.doc_第4页
第9章 查找答案.doc_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第9章 查找9.1知识点:静态查找表一、填空题1. 顺序查找(线性查找) 2. 查找表 3.静态查找表 动态查找表 4. log2n+1 5. 分块查找 关键字有序排列 索引表 6. O(m+n) (m是块长度,n是索引表长度) 7.n n+1二、选择题1.B 2.D 3.A 4.B. 三、判断题1. 2. 3. 4. 四、简答题1答:不适合!虽然有序的单链表的结点是按从小到大(或从大到小)顺序排列,但因其存储结构为单链表,查找结点时只能从头指针开始逐步搜索,故不能进行折半查找。二分查找的速度在一般情况下是快些,但在特殊情况下未必快。例如所查数据位于首位时,则线性查找快;而二分查找则慢得多。2(1) 先画出判定树如下(注:mid=(1+12)/2=6):(2)查找元素54,需依次与30, 63, 42, 54 等元素比较;(3) 查找元素90,需依次与30, 63,87, 95等元素比较;(4)求ASL之前,需要统计每个元素的查找次数。判定树的前3层共查找12243=17次;但最后一层未满,不能用84,只能用54=20次,所以ASL1/12(1720)37/123.083.(1)每块理想长度d=45 (2)块数b=2000/45=45 (3)ASL=(b+1)/2+(d+1)/2=(45+1)/2+(45+1)/2=46 (4)b= 2000/20=100(块) 每块元素个数d=20 ASL=(b+1)/2+(d+1)/2 =(100+1)/2+(20+1)/2=61五、算法设计题1 /折半查找的递归算法 int Search_Bin_Recursive(SSTable ST, int key, int low, int high) if(lowhigh) return 0; /查找不到时返回0 mid=(low+high)/2; if(ST.elemmid.key= =key) return mid; else if(ST.elemmid.keykey) return Search_Bin_Recursive(ST, key, low, mid-1); else return Search_Bin_Recursive(ST, key, mid+1, high); /Search_Bin_Recursive int search(SqList S, KeyType x)/折半查找的非递归算法/二分查找,返回有序表中大于等于x的元素位置int low=1,high=L.length;while(low=high)mid=(low+high)/2;if(S.elemmid.key=x) return midelseif(S.elemmid.keylchild&flag) Is_BSTree(T-lchild); if(T-datadata; if(T-rchild&flag) Is_BSTree(T-rchild); return flag; /Is_BSTree 2 BSTNode * BSTSearch(BSTNode *bt,KeyType k) BSTNode *p=bt; while( p!=NULL & p-key!=k) if(kkey ) p=p-lchild; /沿左子树查找 else p=p-rchild; /沿右子树查找 return p; 3 balance为平衡二叉树的标记,返回二叉树bt是否为平衡二叉树,若是balance为1,否则为0。H为二叉树bt的高度。采用递归先序遍历的判断方法。 void judgeAVL(BSTNode *bt, int &balance,int &h) int bl,br,hl,hr; if(bt=NULL) h=0; balance=1 else if(b-lchild=NULL & bt-rchild=NULL) h=1; balance=1 else judgeAVL(bt-lchild,bl,hl); judgeAVL(bt-rchild,br,br);h=(hlhr?hl:hr)+1; if (abs(hl-hr)2) balance=bl&br; /&为整数的逻辑与 else balance=0;9.3知识点:哈希表一、填空题1. 表中结点数目 负载因子 2. n(n-1)/2 3. 直接定址 4. 小于等于表长的质数(素数)5.哈希函数 解决冲突的方法 6.存取元素时发生冲突的可能性就越大 存取元素时发生冲突的可能性就越小二、选择题1. A B C D 2.D 3.D三、判断题1. 2. 3. 4. 5. 四、简答题1.(1)画表如下:0011223344556677889911011111211311411511611733211763492044010303146471111663311221111113333(2)查找63,首先要与H(63)=63%16=15号单元内容比较,即63 vs 31 ,no;然后顺移,与46,47,32,17,63相比,一共比较了6次!(3)查找60,首先要与H(60)=60%16=12号单元内容比较,但因为12号单元为空(应当有空标记),所以应当只比较这一次即可。(4) ASL=1/11(61*6+233)23/11=2.092. ASL=(1*7+2*4+3)/12=18/12=1.5五、算法设计题1.void PrintWord(HashTable ht)/按第一个字母的顺序输出哈希表ht中的标识符。哈希函数为表示符的第一个字母在字母表中的序号,处

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论