二分查找无重复数组的二分查找(非递归版本)

Posted wanglei5205

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二分查找无重复数组的二分查找(非递归版本)相关的知识,希望对你有一定的参考价值。

// 二分查找法
#include <iostream>
#include <vector>
using namespace std;
int BinarySearch(vector<int> vec,int target)
{
    // 特殊输入
    if(vec.size() <= 0)
        return -1;

    // 二分查找(非递归)
    int low = 0;
    int mid = 0;
    int high = vec.size()-1;

    // 注意:取等号
    while(low <= high)
    {
        mid = (low + high)/2;

        if(vec[mid] == target)
            return mid;

        if(vec[mid] > target)
            high = mid-1;
        else
            low = mid+1;

    }
    return -1;
}

int main()
{
    vector<int> vec = {1,2,3,5,7,7,7,7,9,10};
    int target;
    while(cin>>target)
        cout<<BinarySearch(vec,target)<<endl;
    return 0;
}

以上是关于二分查找无重复数组的二分查找(非递归版本)的主要内容,如果未能解决你的问题,请参考以下文章

二分查找算法(递归与非递归两种方式)

二分查找非递归算法实现

学习数据结构笔记(15) --- [二分查找算法(非递归)]

二分查找算法(非递归)

二分查找

JavaScript实现二分查找(搜索)算法(非递归实现)