我有一个二维矩阵,想要按从大到小的顺序打印出其中的值。我会通过查找最大值,并将其位置设置为
adjacencyMatrix
中的1
来实现这个目标,以便我们不再计算它。问题是,当我测试代码时,它开始正确地打印出最大值,然后跳过了第二大的值。接着找到了第三和第四大的值。又跳过了一些值,最后只打印出0。
以下是我的代码:
public static void findLongestPath(int rows, int columns, int[][] elevationMatrix, int[][] adjacencyMatrix)
{
int max = 0;
for (int x = 0; x < rows * columns; x++)
{
for (int i = 0; i < rows; i++)
{
for (int j = 0; j < columns; j++)
{
if (elevationMatrix[i][j] > max && adjacencyMatrix[i][j] == 0)
{
max = elevationMatrix[i][j];
adjacencyMatrix[i][j] = 1;
}
}
}
System.out.println(max);
max = 0;
}
}
我已经盯着它看了一段时间,但找不到错误,所以我认为再请另外一双眼睛来帮忙。
附言:拜托、拜托、拜托别让我对数组进行排序,因为我无法这样做。我需要保持原始数组的顺序。
rows * columns
的一维副本,并对其进行排序。 - Louis WassermanComparable
接口的类,存储位置和值,然后对它们进行排序。 - Louis Wasserman行数 * 列数 * 行数 * 列数
步骤,这将是永远的。 - Louis Wasserman