二分查找递归算法

本文介绍了一种在有序数组中查找特定数值N的二分查找算法实现。通过递归方式,算法能高效定位目标数值的位置,若未找到则返回-1。示例代码使用C语言实现,展示了完整的查找流程。

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

一、描述:

在一个有序数组中查找具体的某个数 N。若未找到,则返回-1。

二、代码:

#include<stdio.h>
#include<windows.h>
int BinarySearch(int a[], int left,int right,int key){
	while (left <= right)
	{
		int mid = left + ((right - left) >> 1);           //中间值
		if (key == a[mid])                                //关键字相等中间值,找到了
		{
			return mid;                                   
		}
		else if (key <a[mid])                             //关键字小于中间值,在中间之左边查找
		{
			return  BinarySearch(a, left, mid - 1, key);
		}
		else                                               //关键字大于中间值,在中间值右边查找
		{
			return BinarySearch(a, mid +1,right, key);
		}
	}
	return -1;                                             //输入有误,没有找到,返回-1
	}
int main(){
	int a[] = { 11, 22, 33, 44, 55, 66, 77, 88,99,100 };
	int num = sizeof(a) / sizeof(a[0]);                    //求数组个数
	int i = 0;
	printf("Please Emter Number:");
	scanf_s("%d", &i);
	printf("下标为:%d\n", BinarySearch(a, 0, num-1, i));
	system("pause");
	return 0;
}

三、运行结果:

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值