递归实现拆半查找

二分法查找:二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除困难。因此,折半查找方法适用于不经常变动而查找频繁的有序列表。首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。重复以上过程,直到找到满足条件的记录,使查找成功,或直到子表不存在为止,此时查找不成功。

利用递归实现拆办查找:

#include <stdio.h>

void find(int low,int high,int elem,int a[])
{
    if(low>high)
    {
		printf("该数据不在数组中!\n");
        return;
    }
    int mid=(low+high)/2;
    if(elem>a[mid])
    {
        low=mid+1;
        find(low,high,elem,a);
    }else if(elem<a[mid])
    {
        high=mid-1;
        find(low,high,elem,a);
    }else
    {
        printf("在数组中是第 %d 个元素\n",mid+1);
        return;
    }
}
int main()
{
    int a[10]={1,2,0};
    int i;
    for(i=2;i<10;i++)
    {
       a[i]=a[i-1]+a[i-2];
    }
	for(i=0;i<10;i++)
		printf("%d ",a[i]);
	printf("\n");
    int d;
    scanf("%d",&d);
    find(0,9,d,a);
    return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值