我需要分别交换多维数组(2D Array)列的元素,以便最接近该列平均值的数字出现在end(back)示例中:
1 5 8
4 8 7
8 6 2
第一列平均值为4.(3),因此〜4,这意味着我需要4处于第三行
第二列平均值为6.(3),所以〜6意味着我需要6位于第三行中
第三列平均值是5.(6),所以〜6,这意味着我需要7位于第三行,因为它是最接近〜6的数字。
预期结果
1 5 8
8 8 2
4 6 7
我想了一段时间,但没有成功。我设法计算出每列的平均值,仅此而已。
所以我需要交换列中元素的帮助
预先感谢(如果您需要任何其他信息,请询问)
更多示例
Input Input
1 2 3 4 8 9
4 5 6 3 1 7
7 8 9 7 3 2
Output Output
1 2 3 7 8 9
7 8 9 3 1 2
4 5 6 4 3 7
1st col avg = 4 1st col avg =〜4
第二列avg = 5第二列avg = 4
第三列avg = 6第三列avg =〜7
(交换数字,以便使最接近列平均值的数字在后面,因为我不关心位置,只要最接近列平均数的数字在后面就可以了)
答案 0 :(得分:0)
由于您已经知道平均值(因此是位置),并且正在使用C ++,因此可以使用std :: swap交换数组上的任何两个元素:
std::swap(array[e1], array[e2]);
内部std :: swap实现类似于:
template <class T> void swap ( T& a, T& b )
{
T c(a); a=b; b=c;
}