算法铺子之二分查找法

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/alw_123/article/details/79681374

0.二分查找法

二分查找法就是在有序序列中不断分解三个部分(左:小于待查找的元素的区域,右:大于待查找元素的区域,中:中位数)。若待查找的元素与中位数相等,那么说明已经查找到想要查找的元素。否则就看待查找元素的值比中位数大还是小,如果小,就继续将左半部分分解成三个部分,如果大,就将右半部分分解成三个部分,以此类推。直到无法分解或找到待查找元素为止。

这里写图片描述

1. 代码实现

template<class T>
int binary_search(T arr[], int n, T target)
{
    int l = 0 , r = n-1;
    while (l <= r)
    {
        int mid = l + (r - l) / 2;
        if (arr[mid] == target)
        {
            return mid;
        }
        else if (arr[mid] < target)
        {
            l = mid + 1;
        }
        else
        {
            r = mid - 1;
        }
    }
    return -1;
}

猜你喜欢

转载自blog.csdn.net/alw_123/article/details/79681374