通过与输入进行比较来安排输出
Arranging output by comparing with inputs
我有两个数据集,如下所示:
第1组:57.5276 55.3756 24.2798 54.5989
和
第2组:55.1118 55.004 24.824 57.1398
现在我想安排第二组,使其与第一组最接近(我的意思是57.1398 55.1118 24.824 55.004
这个顺序(。 我怎样才能在C++做到这一点。
排列第二组,使其以与第一组相同的方式排序。
更具体地说,第一组从最大数(57.5276
(到第二大数(55.3756
(,再到第四大数到第三大数。
以相同的方式安排第二组。最大 (57.1398
(, 第二大 (55.004
(, 第四大 (24.824
(, 第三大 (57.1398
( 按此顺序排列。这将最大限度地减少同一索引的项目之间的平均差异。
以编程方式实现此目的的一种简单方法是对两个集合进行排序,然后找到第一个集合中每个数字的排序索引,并按相同的顺序排列第二个集合。
匹配的"最接近"应该指定得更好一点。例如,这可以是"最小平方误差"、"最小绝对误差"、"最大相关性",它们都会给出不同的结果。
根据"最接近"的含义,您可能需要遍历 set2 的所有排列,这将是昂贵的。如果你想使用"对两个集合进行排序"解决方案,那么在 c++ 中实现这一点同时保留第一组顺序的一种可能方法是在 set1 中创建一个索引向量,并根据 set1 中的值对其进行排序
std::vector<double> set1{{57.5276,55.3756,24.2798,54.5989}};
std::vector<size_t> set1index(set1.size());
std::iota(set1index.begin(), set1index.end(), 0);
std::sort(set1index.begin(), set1index.end(), [&](size_t a, size_t b){return set1[a] < set1[b];});
然后,您可以对 set2 进行排序,并使用索引使用 set2 的值重新创建 set1 的顺序。
相关文章:
- 比较并显示使用最小值(a,b)和最大值(a、b)升序排列的4个数字
- 递归函数计算序列中的平方和(并输出过程)
- 字符串比较中的意外输出
- 不正确的比较和交换计数器输出用于快速排序功能
- 我如何比较这些不同的输出,看看它们是否相等
- 通过与输入进行比较来安排输出
- 字符串比较在与变量一起使用时给出不同的输出
- 如何比较多个布尔值以通过特定输出?UE4 C++
- C++:为什么输出迭代器不支持比较操作?
- 为什么在浮点比较中,最后一个小数位数为5的浮点值能给出正确的输出,而在其他情况下却不是
- 如何比较cpp和python输出
- 在将数组与字符数组进行比较后需要帮助输出一次结果
- 相同的比较功能为C++中的排序和优先级队列提供不同的输出
- 字符串流量输出比较
- 如何比较nm输出
- 读取终端中的输出并将其与字符串进行比较
- C++ 字符串比较运算符>根据两个字符串的比较方式生成不同的输出
- 比较 (<)、输出 (<<) 和赋值 (=) 用于提升::可选
- 对不工作的wstring迭代器的输出进行相等比较
- OpenCV和c++;比较两个二值图像并获得输出(结果)