C语言二分法剖析

二分法显然就是不断二等分寻找条件的过程。就象纸一样不断对折,面积不断缩小。在数学数组中就是不断二等分缩小范围。这样无论是计算频率还是运行速度要比普通算法要快很多。

下面用二分法代码以注释的方法理解C语言二分法代码实现。

//首先要注意那个数组必须是你以升序的方式排好的。 
int Dichotomy(int n,int array[],int target)//二分法函数算法,其中n为数组中有多少个数,target是需要寻找的数。 
{
	int left=0,right=n-1,mid=0;
	while(left<=right)//首先的left与right必符合该条件,如果最终没有想找的数target,就不进行此循环而是return 0; 
	{
		mid=(left+right)/2;//现在分两半,找到中间的数组序号,并拿中间数组数来判断要去掉左边还是右边。 
		if(target>array[mid])//如果所寻找的那个数大于中间数组值,那么我们就去掉左边(因为所寻找的那个数在中间数组的右边)。 
		{
			left=mid+1;//改变left初始值,将中间数组号+1 给left(为什么+1,不+1的话得不到while循环left>right的条件)。 
		}else if(target<array[mid])//如果所寻找的那个数小于中间数组值,那么我们就去掉右边(因为所寻找的那个数在中间数组的左边)。
		{
			right=mid-1;//类同。 
		}else//如果以上条件都不符合,那只有target=array[mid],那说明数组中有你想找的数。 
		{
			return 1;//找到那个数我给它为一。 
		}
	}
	return 0;//找不你想找的数target,就返回零。 
}

本代码摘自链接中题答案代码一部分。G - 二分法+时间复杂度(简单)_张立龙666的博客-CSDN博客蒜头君手上有个长度为nn的数组AA。由于数组实在太大了,所以蒜头君也不知道数组里面有什么数字,所以蒜头君会经常询问整数xx是否在数组AA中。输入格式第一行输入两个整数nn和mm,分别表示数组的长度和查询的次数。接下来一行有nn个整数a_iai​。接下来mm行,每行有11个整数xx,表示蒜头君询问的整数。输出格式对于每次查询,如果可以找到,输出"YES",否则输出"NO"。数据范围1 \le n, m \le 10^5, 0 \le x \l...https://blog.csdn.net/weixin_62659979/article/details/121463349

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

张立龙666

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

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

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

打赏作者

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

抵扣说明:

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

余额充值