单独交换列元素(二维数组)C ++

时间:2018-12-07 13:24:41

标签: c++ visual-c++ multidimensional-array

我需要分别交换多维数组(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

(交换数字,以便使最接近列平均值的数字在后面,因为我不关心位置,只要最接近列平均数的数字在后面就可以了)

1 个答案:

答案 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;
}