获取一个数组(vector)与查找值(value)的差最小绝对值的成员索引的算法

代码如下:

函数作用:传递进来一个数组(vector),和一个需要查找的值(value),返回与value的差值绝对值最小的vector成员索引,若value不在vector范围中,则返回-1;
int MyMethod::getSimilarIndex(const QVector<double>& vector, const double& value)
{
    int a = -1;
    double tempX = abs(vector[0] - value);
    bool greaterThan = false, lessThan = false;//用来判断value的值是否在vector范围之中
    for (int i = 0; i < vector.size();i++)
    {
        if (vector[i] >= value)
            greaterThan = true;
        if (vector[i] <= value)
            lessThan = true;
        if (abs(vector[i] - value) <= tempX)
        {
            a = i;
            tempX = abs(vector[i] - value);
        }
    }
    if (!greaterThan || !lessThan)
        a = -1;
    return a;
}

反思:一个简单的算法如果需要考虑周密,并且精炼,那它也不会简单,继续加油

坚持成就伟大
原文地址:https://www.cnblogs.com/xian-yongchao/p/9599699.html