C++二分查找循环递归代码问题

C++二分查找基本框架是什么啊,最近在学二分查找不会了
c++二分查找循环基本框架

//what

c++二分查找递归基本框架

//what

二分查找一般用于已经排序好的数组。
比如说有一个数组 1 2 3 4 5 6 7 8 9
我要找5
正常的查找是for循环一个一个找
二分查找这样找
定义2个指针 left 和right
left在最左侧,right在最右侧
然后取中间值 mid;
看中间值大于5还是小于5
若大于5 则left=mid+1;
若小于5 则right=mid-1
left<=right 则查找值不存在
实现代码如下


 //二分查找
    int a[10]={1,2,3,4,5,6,7,8,9};

    int left=0,right=9;
    int n=5;
    while(left<right)
    {
        int mid=(left+right)/2;
        if(a[mid]==n)
        {
            printf("findvalue  index = %d",mid);
            break;
        }
        else if(a[mid]<n)
        {
            left=mid+1;
        }
        else {
            right=mid-1;
        }
    }

img

二分查找首先要求数组是有序的
然后定义两个游标,一个指向需要搜索的数值区域的左边界,一个指向右边界,然后判断数值区域的中间位置的数值是否是需要查找的值,如果不是,则根据中间值与需要查找的数值的大小,继续在前半部分或后半部分中查找,而这个查找过程,可以递归,因为逻辑完全一致