数据结构之查找(折半查找/二分查找)

本文详细介绍了折半查找(二分查找)算法的工作原理,特别强调了其适用于有序顺序表的特点。通过实例展示了查找过程,包括如何确定中间值、调整查找范围,并分析了在不同元素数量下的查找效率。此外,还探讨了折半查找与平衡二叉树的关系,以及如何通过折半查找判定树来评估查找效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

算法思想

首先折半查找又称二分查找只针对于有序顺序表
在这里插入图片描述
重要思想就是对半分
把0号位置给一个low
然后顺序表的最高位赋一个high位
然后使
middle=low+high/2
然后比较
data[middle]与我们要找的数据的对应大小,大的话就是在middle的右边
小的话就是在middle的左边
(如果等于的话就查找的就是middle)

如果大于middle把low=middle+1
如果小于就是high=middle-1
重点-查找数据只能出现在[low,high]之间在这里插入图片描述
比如图中我们找的是33
此时33<37
high=mid-1
high=7
data[high]=33
在这里插入图片描述
然后mid=(6+7)/2=6
data[mid]=32
low=mid+1=7
在这里插入图片描述
现在low和high指向同一个元素
mid=(low+high)/2=7
然后
data[mid]=33查找成功
如果这个不算33是34比如
那么high=mid-1
这样的话high=6 low=7
循环条件失效,查找失败
在这里插入图片描述

算法实现

在这里插入图片描述

查找效率分析

在这里插入图片描述

在这里插入图片描述

查找判定树的构造

奇数个元素

在这里插入图片描述
当元素的个数奇数个时
在这里插入图片描述
然后在找中间的可以一步步切割
在这里插入图片描述

偶数个元素

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

结论

在这里插入图片描述
右子树的节点要么比左子树节点多一个,要么和左子树相等

对应练习
在这里插入图片描述
就是总是先加到右子树上面
然后加到左子树上面,且要一级一级考虑
(就是加完4以后加1的左子树呗,就是3,3肯定也要加到右子树上呗就加个5节点
这就叫一级一级考虑)
在这里插入图片描述
这个折半查找判定树平衡二叉树呗
那就有个对应的性质
在这里插入图片描述

在这里插入图片描述

用折半查找判定树分析查找效率

在这里插入图片描述

总结

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小袁拒绝摆烂

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值