二分法。。。。。

文章介绍了二分法的概念,它是一种在有序数列中查找特定元素的高效算法。通过举例猜数字游戏,解释了二分法的工作原理,即通过不断将查找范围减半来快速定位目标。文中还提供了简单的C语言代码示例,展示如何在数组中使用二分法寻找特定值,并详细说明了计算数组末位下标的方法以及根据比较结果更新查找范围的逻辑。
摘要由CSDN通过智能技术生成

1.我们在玩猜数字游戏时,如1-100,通常会选择先猜50,如果大了,接下来便是25,如果小了,就猜75,这种方法就叫做二分法。二分法能节省大量步骤。

2.二分法只能在有序数上使用,这是因为二分法通过下标来比较,而数组的下标,由0开始依次增加,如果数组无序那么可能会造成a>b 但是 a的下标却小于b,这样就得不到正确答案。

3.二分法代码如下

int main()
{
	int a, b, c;
	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
	a = 0;
	int l = sizeof(arr) / sizeof(arr[0]);
	b = l-1;
	
	int d = 0;
	while (a <= b)
	{
		c = (a + b) / 2;
		if (arr[c] == 7)
		{
			printf("找到了,下标是%d", a); d = 1;
			break;
		}
		else if (arr[c] < 7)
		{
			a = c + 1;
		}
		else
		{
			b = c - 1;
		}
	}
	if (d == 0)
	{
		printf("找不到");
	}
	return 0;

4.想找到中间数,可以让数组首位下标加上末位下标/2,那么首位下标大家都知道是0,末位怎么得到呢? 我们可以使用sizeof函数计算出数组字节长度,再除以一个字节,可以得到字符的个数,但由于下标从0开始,所以末位=字符个数-1.

5当第一次判断后,我们的中间数则需要改变了,此时如果判断为大了,则要找的数在中间数左侧,所以a不用变,而b变成c-1即可,若判断为小了,则b不变a+1.

接下来使用循环重复以上步骤,直至找到要找的数。

二分法介绍到此为止,感谢观看。。。。。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值