同时比较二维数组的层

时间:2016-11-20 06:53:35

标签: java arrays

我正在为Java中的Algorithms类开发一个项目,我不知道这个问题。

我有一个大小为[m] [n]的二维数组,其中m和n可以根据输入而波动。我想将值压缩为单维数组,基于哪个值是二维数组中任何垂直列的最低值。这是阵列的两个样本。

样本1输入:

3.0, 4.0, 2.0, 3.0, 4.0, 2.0, 1.0, 2.0, 0.0, 3.0, 3.0 
0.0, 1.0, 1.0, 2.0, 3.0, 1.0, 2.0, 3.0, 3.0, 2.0, 2.0 

样本1输出:

0.0, 1.0, 1.0, 2.0, 3.0, 1.0, 1.0, 2.0, 0.0, 2.0, 2.0

样本2输入:

0.0, 1.0, 1.0, 2.0, 3.0, 1.0, 2.0, 3.0, 3.0, 2.0, 2.0 
2.0, 3.0, 1.0, 0.0, 1.0, 3.0, 2.0, 3.0, 3.0, 4.0, 2.0 
1.0, 2.0, 2.0, 3.0, 4.0, 0.0, 1.0, 2.0, 2.0, 1.0, 3.0 
1.0, 2.0, 0.0, 1.0, 2.0, 2.0, 1.0, 2.0, 2.0, 3.0, 1.0 
2.0, 3.0, 1.0, 2.0, 3.0, 1.0, 0.0, 1.0, 1.0, 2.0, 2.0 

样本2输出:

0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0

这就是我想要排序的逻辑:

loop through the 2-d array
at every vertical index, compare all values within the vertical index,
output lowest value to single dimensional array

我相信这是一个有点简单的问题,但我无法理解如何正确地做到这一点。感谢您提供任何建议!

1 个答案:

答案 0 :(得分:3)

想象一下,对于输入[m] [n] m将是您的行,n将是您的列,因此您必须逐列遍历才能获得该列中的最低值:

int[] output = new int[n];
for(i = 0; i < n; i++)
   output[n] = input[0][n];
for(i = 0; i < n; i++)
   for(k = 0; k < m; k++)
      if(output[n] > input[m][n])
          output[n] = input[m][n];