数据结构--二分查找法

本文介绍了二分查找法的概念和应用场景,详细讲解了如何通过比较中间值来逐步缩小搜索范围,提升查找效率。文章提供了分步实现二分查找的代码示例,并讨论了目标值不在有序数据范围内的处理情况。
摘要由CSDN通过智能技术生成

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

在面对数据量比较大的有序数据时,要查找到目标值,只是简单的从头开始一个个找,这样需要查找N次,效率十分低下,这使得人很头疼,这时候主角二分查找法登场,我们通过二分查找法只需要查找log2(n)次,大大提高查找效率。


``

一、二分查找法是什么?

面对数据量较大的有序数据,我们需要先确定有序数据的中间值,与中间值对比,比中间值大则去除比中间值小的数据,比中间值小则去除比中间值大的数据,重复此步骤直至查找到目标值。
例如
一组有序的数据

int arr[10]={
   1,2,3,4,5,6,7,8,9,10};

例如我们需要查找目标值 7,对应数组下标6
在这里插入图片描述
这组数据的中间值是5,对应数组下标是4 在经过第一次二分查找法 变成如下
目标值比中间值大,保留比中间值大的数据
在这里插入图片描述
第二次二分查找,确立中间值是8 目标值比中间值小,去左边
在这里插入图片描述
第三次查找,中间值为7与目标值相同,算法结束。在二分查找法中 我们需要确定数组最左和最右的下标,中间值下标取最左和最右的下标的平均值的整数,中间值下标对应的中间值与目标值对比,不能将数据和数据下标混淆。

二、代码实现

1.确立左右下标和中间值下标

int left = 0;
	int sz = sizeof(arr) / sizeof(arr[0])</
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值