【发布时间】:2016-02-09 17:53:32
【问题描述】:
我实现了这个东西,但我不确定这是正确的
Example : int [][]={{2,1,0},{2,8,9},{1,1,0}}
在上面1 (2+1+0=3) 行中的元素总和小于2(2+8+9=19) 行中的元素总和并且大于第3 行的总和(2)。
最终的数组应该是{{2,8,9},{2,1,0},{1,1,0}}
int arr[5][5];
int rowSum[5];
int sum = 0;
for(int i=0;i<5;i++)
{
for(int j=0;j<5;j++)
{
sum = sum + arr[i][j];
}
rowSum[i] = sum;
sum=0;
}
int swap;
//now sorting
for (int c = 0 ; c < ( n - 1 ); c++)
{
for (int d = 0 ; d < n - c - 1; d++)
{
if (rowSum[d] > rowSum[d+1]) /* For decreasing order use < */
{
swap = rowSum[d];
rowSum[d] = rowSum[d+1];
rowSum[d+1] = swap;
//swapping original array
for(int i=0;i<5;i++){
swap = arr[d][i];
arr[d][i] = arr[d+1][i];
arr[d+1][i] = swap;
}
}
}
}
【问题讨论】:
-
“我不确定这是否正确” - 你测试过吗?我觉得不错
-
是否有充分的理由不实现
Comparator<int[]>并使用Arrays.sort? -
您好。请不要在您的帖子中添加“紧急”,尤其是在标题中 - 这只是被删除的噪音。请注意,这里的问题同样重要。谢谢!