第七章-查找
依旧如上周一般,从概念性作业开始进行梳理吧:
一些 PTA选择以及判断题:
判断题
1、在散列表中,所谓同义词就是具有相同散列地址的两个元素。 (2分)
2、即使把2个元素散列到有100个单元的表中,仍然有可能发生冲突。 (2分)
3、将M个元素存入用长度为S的数组表示的散列表,则该表的装填因子为M/S。 (2分)
4、在度量搜索引擎的结果集的相关度时,召回率很低意味着大多数相关的文档没有被找到。(2分)
(关于准确率和召回率:https://blog.csdn.net/yechaodechuntian/article/details/37394967)
5、在度量搜索引擎的结果集的相关度时,准确率很低意味着找出的大部分文档是无关的。(2分)
选择题
2、 将M个元素存入用长度为S的数组表示的散列表,则该表的装填因子为: (2分)
M/S
3、在下列查找的方法中,平均查找长度与结点个数无关的查找方法是: (2分)
4、散列冲突可以被描述为: (2分)
5、若查找每个元素的概率相等,则在长度为n的顺序表上查找任一元素的平均查找长度为()。 (2分)
6、有一个有序表为{1, 3, 9, 12, 32, 41,45, 62, 75, 77, 82, 95, 100},当用二分法查找值 82 的结点时,()次比较后查找成功。 (2分)
7、(neuDS)对线性表进行二分查找时,要求线性表必须( ) (2分)
8、(neuDS)当采用分块查找时,数据的组织方式为( )。(2分)
9、现有长度为 7、初始为空的散列表HT
,散列函数(,用线性探测再散列法解决冲突。将关键字 22, 43, 15 依次插入到HT
后,查找成功的平均查找长度是:(2分)
10、__是HASH查找的冲突处理方法: (2分)
基本概念:
1、动态查找表和静态查找表
动态查找表:在查找的同时对表修改操作(如:插入和删除)
静态查找表:与动态查找表刚好相反
2、平均查找长度
(即关键字的平均比较次数)为确定记录在查找表中的位置,需和给定值进行比较的关键字个数的期望值,称为查找算法在查找成功时的平均查找长度
若查找概率相同: ASL = (C1+C2+C3+C4+...)/n
若查找概率相同且进行:ASL= (C1+C2+C3..+Cn)/n = (n+1)/2
线性查找:
顺序查找:从表的一端开始,依次将记录的关键字和给定的值进行比较。
(记得有监视哨的顺序查找)
算法如下:
1 int search_seq(sstable st,keytype key) 2 { 3 st.r[0].key = key; //哨兵 4 for(i=st.length;st.r[i].key!=key;--i); //从后往前找 5 return i; 6 }
折半查找,也称二分查找
首先记得要排序,然后是从中间开始进行比对
分块查找:又称搜索引擎查找
性能介于顺序查找和折半查找之间的一种查找
树表查找:
二叉排序树:
左子树上的所有节点的值小于它的根节点的值
右子树则大于
平衡二叉树:
左子树和右子树的深度之差不超过一
左右子树均是平衡二叉树
散列表的查找:
散列函数与散列地址:Hash函数,可以得到散列地址
散列表:一个有连续的地址空间,用以存储按散列函数计算得到相应散列地址的数据记录
冲突和同义词:
处理冲突的方法:
开放地址法:1、线性探测法(找空位法) 2、二次探测法(记得利用平方相加)3
链地址法:存放在链表里
由于匆忙,本次大题的博客将会在后面进行补充
本周已达上周的目标,同时对于突然的博客作业,感到无语,匆匆忙忙的开始写的,质量降低,纯属无奈
希望下周能好好的复习吧~~~