代码如下:
函数作用:传递进来一个数组(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; }
反思:一个简单的算法如果需要考虑周密,并且精炼,那它也不会简单,继续加油