折半查找以及折半查找递归注意点示范:同时附带return 值。

GCC下C语言折半查找

代码演示在ubuntu下gcc演示:详细参考数据结构C语言版

#include<stdio.h>
#define COMPARE(x,y) (((x)<(y))?-1:((x)==(y))?0:1)//折半查找的迭代函数
int binsearch(int list[],int searchNum,int left,int right)
{
    int middle;
    while(left<=right)
    {
        middle=(left+right)/2;
        switch(COMPARE(list[middle],searchNum))
        {
            case -1:left=middle + 1;
                    break;
            case 0 :return middle;
            case 1 : right = middle -1;
        }
    }
    return -1;
}
//目前初步来说将一个函数转换为一个递归函数,必须有两个要素:构造递归调用终止的边界条件&&实现递归调用,使得每次递归调用都能够向最终解逼近一步。
int binsearch(int list[],int searchNum,int left,int right)//折半查找的递归函数
{
    int middle;
    while(left<=right)
    {
        middle=(left+right)/2;
        switch(COMPARE(list[middle],searchNum))
        {
            case -1:return binsearch(list,searchNum,middle + 1,right);
            case 0 :return middle;
            case 1 :return binsearch(list,searchNum,left,middle - 1);
        }
        }
    return -1;
}


//关于return -1/0/1的意思,折半查找函数中,如果返回为-1,就是说明没有找到相等的数据,非正常结束。return 0表示正常退出,return 非0表示异常结束。

 

转载于:https://www.cnblogs.com/dog-and-cat/p/6636941.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值