【C】使用函数递归实现顺序数组二分查找

#include <stdio.h>
int BinarySearch(int r[],int low,int high,int k){
    int mid;
    if (low>high){
        //若找不到,则返回-1,这也是递归终止条件
        return -1;
    }
    else{
        mid=(low+high)/2;
        //在顺序数组中,判断k在左边还是右边
        if (k<r[mid]){
            return BinarySearch(r,low,mid-1,k);
        }
        else if(k>r[mid]){
            return BinarySearch(r,mid+1,high,k);
        }
        //如果左右都不是,那k就在中间
        else{
            return mid;
        }
    }
}
int main(){
    int input;
    int arr[]={1,3,5,7,9,15,17,19,21,23,25,27,31};
    scanf("%d",&input);
    printf("%d",BinarySearch(arr,0,sizeof(arr)/sizeof(arr[0])-1,input));
    return 0;
}
© 版权声明
THE END
点赞15 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容