二分搜索法特点:
1、数据顺序排列
2、每次去取最中间的数值
3、根据目标数和中间数的大小,调整最小值索引或最大值索引范围
4、直至匹配或者无法继续3的操作

template;
int BinarySearch(const std::vector &nVector, const CompareData &nData)
{

int nLow = 0;
int nHigh = nVector.size() - 1;
while (nLow <= nHigh)
{
    int nMid = (nLow + nHigh) / 2;

    if (nVector[nMid] < nData)
    {
        nLow = nMid + 1;
    }
    else if (nVector[nMid] > nData)
    {
        nHigh = nMid - 1;
    }
    else
    {
        return nMid + 1;
    }
}

return -1;

}

int main()
{

std::vector<int> nVector;
for (int i = 0; i < 10; i++)
{
    nVector.push_back(i);
}

int result = BinarySearch(nVector, 5);
LOG_INFO("result:" << result);

}

标签: none

添加新评论