码迷,mamicode.com
首页 > 编程语言 > 详细

C++ 二分查找算法

时间:2020-04-14 01:09:54      阅读:87      评论:0      收藏:0      [点我收藏+]

标签:范围   ret   数组   大于   color   等于   lse   stream   查找算法   

#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;
}

 

C++ 二分查找算法

标签:范围   ret   数组   大于   color   等于   lse   stream   查找算法   

原文地址:https://www.cnblogs.com/shenji/p/12695102.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!