第七章-查找

依旧如上周一般,从概念性作业开始进行梳理吧:

一些 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分)

      
6、在机场安检处做爆炸物品检测时,召回率比准确率更重要。(2分)
    
7、(neuDS)由顺序表和单链表表示的有序表均可使用二分查找法来提高查找速度。 (2分)
    
(http://www.xuecan.net/yanzhao/5680.html)
8、采用平方探测冲突解决策略((, 注意:不是±),将一批散列值均等于2的对象连续插入一个大小为11的散列表中,那么第4个对象一定位于下标为0的位置。 (2分)
     

 选择题

 1、已知一个长度为16的顺序表L,其元素按关键字有序排列。若采用二分查找法查找一个L中不存在的元素,则关键字的比较次数最多是: (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 }
View Code

折半查找,也称二分查找

 首先记得要排序,然后是从中间开始进行比对

分块查找:又称搜索引擎查找

性能介于顺序查找和折半查找之间的一种查找

树表查找:

二叉排序树:

左子树上的所有节点的值小于它的根节点的值

右子树则大于

平衡二叉树:

左子树和右子树的深度之差不超过一

左右子树均是平衡二叉树

散列表的查找:

散列函数与散列地址:Hash函数,可以得到散列地址

散列表:一个有连续的地址空间,用以存储按散列函数计算得到相应散列地址的数据记录

冲突和同义词:

处理冲突的方法:

开放地址法:1、线性探测法(找空位法) 2、二次探测法(记得利用平方相加)3

链地址法:存放在链表里

由于匆忙,本次大题的博客将会在后面进行补充

本周已达上周的目标,同时对于突然的博客作业,感到无语,匆匆忙忙的开始写的,质量降低,纯属无奈

希望下周能好好的复习吧~~~

原文地址:https://www.cnblogs.com/JeffKing11/p/10951464.html