二分查找法(仅代码)

函数封装代码:

void number(int arr[],int  key,int left,int right)
{
	while (left <= right)
	{
		int mid = (left + right) / 2;    //找到中间下标,在和要找的数字比较
		if (arr[mid] == key)        //等于要找的数字就输出
		{
			printf("找到了下标是【%d】", mid);  //注意:这里打印是小标,是上面中间变量的(mid)
			break;
		}
		else if (arr[mid] < key)         //中间值变量小于要找的值就把左下标+1       
		{
			mid = left++;
		}
		else            //中间值变量大于要找的值就把右下标-1
		{
			mid = right--;
		}
		if (left > right)
		{
			printf("找不到!");
		}
	}
}

主函数调用:

int main()
{
	int arr[] = { 1,2,3,4,5,6,7,8,9,10 };    //注意:这种方法只能是升序序列
	int left = 0;        //定义左下标
	int right = sizeof(arr) / sizeof(arr[0]);       //定义右下标
	int key = 0;          //要找的值
	scanf("%d", &key);
	number(arr,key, left,right);
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值