C++ 二分查找算法

#include<iostream>
using namespace std;

//二分查找法,查找一个数组的元素,并返回所在的位置的下标,
//必须要是一个有序的数组,
int select_arr(int arr[], int len, int arr_value)
{
    while (1)
    {
        int left = 0;  //数组的左侧下标
        int right = len-1; //数组的右侧下标
        while (left <= right)  
        {
            int mid = (left + right) / 2;  //定义中间位的下标
            int mid_value = arr[mid];  //定义中间值的基准值
            if (mid_value == arr_value)  //如果基准值正好等于要查找的值,则自动返回要找的位置
            {
                return mid;
            }
            //如果基准值大于要查找的值,表明值在左半边,新的查找范围为中间值-1位,也就是mid-1
            else if (mid_value > arr_value)
            {
                right = mid - 1;
            }
            //如果基准值小于要查找的值,表明值在右半边,新的查找范围为中间数+1位,也就是mid+1;
            else if (mid_value < arr_value)
            {
                left = mid + 1;
            }
        }
        return -1;
    }
}


int main()
{
    //定义一个int数组,并使用二分查找元素
    int arr[10] = { 1, 3, 5, 7, 9, 10, 16, 46, 88, 91 };
    
    int weizhi=select_arr(arr, 10, 16);


    return 0;
}

猜你喜欢

转载自www.cnblogs.com/shenji/p/12695102.html