交换不相等列数组的内容

时间:2015-05-31 14:50:57

标签: arrays

我有这个问题,到目前为止我能够创建一个方法来对一行中的整数值求和并将其与另一行的总和进行比较,但我不知道如何交换行。有什么帮助吗?

问题是:

编写一个给定二维数组的Java程序,重新排序行,使得行总和最高的行是第一行。

如果使用以下数组调用程序:

1 3 5 9
2 100
2 2 3

然后输出应该是:

2 100
1 3 5 9
2 2 3

应执行以下步骤:

  1. 计算行总和
  2. 查找具有最大总和的行的索引
  3. 与行0交换最大总和的行
  4. public static void main(String[] args) 
    {
        int [][] a = {{1,3,5,9},{2,100},{2,2,3}};
        int max = sum(0,a);
        int index = 0;
        for (int i = 1; i < a.length; i++)
        {
            if( max < sum(i,a) )
            {
                max = sum (i,a);
                index = i;
            }
        }
    }
    
    public static int sum(int y, int[][]x)
    {
        int sum = 0;
        for(int j = 0; j<x[y].length; j++)
            sum+= x[y][j];
        return sum;
    }
    

1 个答案:

答案 0 :(得分:0)

请原谅我的傲慢,我从来没有用Java写过,我不能尝试 - 避免使用工具,但我想,代码看起来应该是这样的

public static void main(String[] args) 
{
    int [][] a = {{1,3,5,9},{2,100},{2,2,3}};
    int max = sum(a[0]);
    int index = 0;
    for (int i = 1; i < a.length; i++)
    {
        int t = sum(a[i]);
        if( max < t )
        {
            max = t;
            index = i;
        }
    }
    if (index != 0) {
       int tmp[] = a[0];
       a[0] = a[index];
       a[index] = tmp; 
    }
}

public static int sum(int[]x)
{
    int sum = 0;
    for(int j = 0; j<x.length; j++)
        sum+= x[j];
    return sum;
}