【发布时间】:2013-10-13 08:47:18
【问题描述】:
我整天都在处理这个问题,但不知道下一步该做什么。我让它对行进行排序,但它不会完全对最后一行进行排序。这是我的代码。我知道一旦我或有人得到这个我会觉得很愚蠢。谢谢
public class Sort2DRow
{
public static void main (String [] args)
{
int[][] matrix = {{3,5,6}, {4,1,2},{9,8,7}};
System.out.println("Before the sort");
for(int row = 0; row <matrix.length; row++){
for(int col = 0; col <matrix[row].length; col++){
System.out.print(matrix[row][col] + " ");
}
System.out.println();
}
System.out.println();//Spacer
System.out.println("After sort method");
sortRow(matrix);
}
public static int[][] sortRow(int[][] m)
{
int temp = 0;
for(int row = 0; row < m.length ; row++)
{
for(int col = 0; col < m.length -1; col++){
if(m[row][col] > m[row][col + 1])
{
temp = m[row][col];
m[row][col] = m[row][col + 1];
m[row][col + 1] = temp;
}
}
}
for(int row = 0; row <m.length; row++){
for(int col = 0; col <m[row].length; col++){
System.out.print(m[row][col] + " ");
}
System.out.println();
}
int[][] result = m;
return result;
}
}
【问题讨论】:
-
您有两个循环在
col上循环。他们没有相同的上限,我怀疑一个只是一个错字。但是,我不知道这是否足以解决问题(因为这个特定的矩阵是方形的,所以错误可能实际上并没有什么不同)。 -
好的,我认为您只是没有使用有效的排序算法。您正在对每一行进行独立排序,对吗?但是用于对每一行进行排序的算法是一个遍历行的
for循环,并且您无法通过一次遍历数组来对数组进行排序。如果这是交换排序或冒泡排序,则需要准确研究交换排序的工作原理。你需要一个嵌套的for循环(row上的循环不算在内)。
标签: java arrays sorting return 2d