【发布时间】:2018-10-05 21:17:26
【问题描述】:
我有两个已排序的向量,我想找到向量1 中与向量2 中另一个值的差异(距离)最小的值的索引。但是,我的以下代码可以完成这项工作,因为我使用的向量总是排序的,我觉得大多数情况下还有另一种更有效的方法来做同样的事情。任何指南?提前致谢。
#include<iostream>
#include<cmath>
#include<vector>
#include<limits>
std::vector<float> v1{2,3,6,7,9};
std::vector<float> v2{4,6.2,10};
int main(int argc, const char * argv[])
{
float mn=std::numeric_limits<float>::infinity();
float difference;
int index;
for(int i=0; i<v1.size(); i++){
for(int j=0; j<v2.size(); j++){
difference = abs(v1[i]-v2[j]);
if(difference < mn){
mn= difference;
index = i;
}
}
}
std::cout<< index;
// 2 is the wanted index because |6-6.2| is the smallest distance between the 2 vectors
return 0;
}
【问题讨论】:
标签: c++ algorithm performance