二分搜索法
二分搜索法特点:
1、数据顺序排列
2、每次去取最中间的数值
3、根据目标数和中间数的大小,调整最小值索引或最大值索引范围
4、直至匹配或者无法继续3的操作
template
int BinarySearch(const std::vector
{
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);
}