
正文
获取一个数组(vector)与查找值(value)的差最小绝对值的成员索引的算法
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
代码如下:
函数作用:传递进来一个数组(vector),和一个需要查找的值(value),返回与value的差值绝对值最小的vector成员索引,若value不在vector范围中,则返回-1;
int MyMethod::getSimilarIndex(const QVector<double>& vector, const double& value)
{
int a = -;
double tempX = abs(vector[] - value);
bool greaterThan = false, lessThan = false;//用来判断value的值是否在vector范围之中
for (int i = ; 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 = -;
return a;
}
反思:一个简单的算法如果需要考虑周密,并且精炼,那它也不会简单,继续加油








