数据结构-查找

数据结构-查找


![在这里插入图片描述](https://img-blog.csdnimg.cn/4a17159396ff4f48a5f225d86c3df9cf.png #pic=600x400)

线性结构

顺序查找

适用存储结构:顺序表、链表
时间复杂度:(n+1)/2
空间复杂度:1 (哨兵所占空间)
优点:逻辑次序无要求,且不同存储结构都适用
缺点:当n较大时,平均查找长度场,效率低

折半查找

适用存储结构:有序的顺序表
时间复杂度:log2n
优点:效率比顺序查找高
缺点:只适用于有序表,且限于顺序存储结构

1、折半查找过程所对应的判定树是一颗二叉平衡树

2、已知一个长度为16的顺序表,其元素按关键字有序排列,若采用折半查找算法查找一个不存在的元素,则比较的次数至少是(),至多是()

答案:5,4;
分析:如下图,假设查找的数据为20,那么就是按图中箭头挨个查找,查到15还没有 查到,但此时已经查了5次。
最少为4次的情况是从7开始。
比较次数等价于判定树的深度,深度最高位log2n +1=5
在这里插入图片描述

3、具有12个关键字的有序表中,对每个关键字的查找概率相同,折半查找算法成功的平均查找长度为(),折半查找查找失败的平均查找长度为()

答案:4、5

分析:构造判定树,用判定树计算ASL

4、对有2500个记录索引顺序表进行查找,最理想的块长为()

答案:50

分析:设块长为b,则索引表为n/b项,索引表的ASL=(n/b+1)/ 2,块内的ASL=(b+1)/2
总ASL=(b+n/b+2)/ 2 ,其中b+n/b, 由均值不等式可知,b>=50;

5、已知一个长度为16的顺序表L,其元素按关键字有序排列,若采用折半查找算法查找一个L中不存在的元素,则关键字的比较次数最多是()

答案: 5

分析:比较次数最多等价于判定树的深度

6、下列选项中,不能构成折半查找中关键字比较序列的是()

答案:500,200,450,180

7、现有一棵无重复关键字的平衡二叉树(AVL),对其进行中序遍历可得一个降序序列。下列关于该平衡二叉树的叙述中,正确的是()
A、根结点的度一定为2
B、树中最小元素一定是叶结点
C、最后插入的元素一定是叶结点
D、树中最大元素一定是无左子树

答案:树中最大元素一定是左子树

解析:
A. 不一定嘛。只有根结点也可以。

B. 中序遍历:LPR。当没有R的时候,最小元素是P,它不是叶子结点。

C. 因为要进行平衡调整,所以不一定。 LR旋转和RL旋转,最后插入的结点都可能成为根节点【LR:左孩子的右子树本来就是空时;RL:右孩子的左子树本来就是空时】。比如:

D. 中序遍历:LPR。如果有左子树,则P比左子树更小,不会是最大元素。

散列表

概念

散列函数:一个查找表中的关键字映射成该关键字对应的地址的函数 Hash(key)= Addr
冲突:散列函数可能会把两个或两个以上的不同关键字映射到同一地址
同义词:发生碰撞的不同关键字

散列函数的构造方法

1、直接定址法:H(key) = key 或者 H(key) = a*key+b
2、除留余数法:H(key) = key%p ,设表长为m, p<=m 且 p为质数
3、数字分析法
4、平方取中法
5、折叠法

处理冲突的方法:

1、开放地址法

	(1)线性探测法
	(2)二次探测法
	(3)伪随机探测法

2、链地址法

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值