这是赋值:编写一个方法,用2个维度对矩阵的元素进行排序。例如
sort({{1,4}{2,3}})
会返回一个矩阵
{{1,2}{3,4}}.
我不知道在我的代码中我做错了导致我得到的输出是3.0,3.0,4.0,4.0。
这是我到目前为止所有的帮助将不胜感激。
public static void main(String[] args) {
double[][] array = { {1, 4}, {2, 3} };
double[][] new_array = sort(array);
for(int i = 0; i < array.length; i++) {
for(int j = 0; j < array.length; j++) {
System.out.print(new_array[i][j] + " ");
}
}
}
public static double[][] sort(double[][] array) {
double[] storage = new double[array.length];
for(int i = 0; i < array.length; i++) {
for(int j = 0; j < array.length; j++) {
storage[i] = array[i][j];
}
}
storage = bubSort(storage);
for(int i = 0; i < array.length; i++) {
for(int j = 0; j < array.length; j++) {
array[i][j] = storage[i];
}
}
return array;
}
public static double[] bubSort(double[] list) {
boolean changed = true;
double temp;
do {
changed = false;
for (int j = 0; j < list.length -1; j++)
if (list[j] > list[j + 1]) {
temp = list[j];
list[j] = list[j + 1];
list[j + 1] = temp;
changed = true;
}
} while (changed);
return list;
}
}
答案 0 :(得分:1)
您遇到的主要问题是如何将值从2d数组复制到1d数组中。实际上,您只将两个值复制到长度为2的数组中.2d数组的长度不是完整的m x n长度。
我将给出一个小提示如何从2d数组复制到1d数组,但是由你决定如何从1d数组复制回2d数组。另外,你将如何找到阵列的全长?
double[] storage = new double[4];//You should calculate this value
int k = 0;
for (int i = 0; i < array.length; i++) {
for (int j = 0; j < array.length; j++) {
storage[k++] = array[i][j];
}
}
您的冒泡排序工作正常,但之后您正在复制错误的值。尝试在排序后打印阵列存储,您将看到它现在正确。
答案 1 :(得分:0)
您正在覆盖已将其设置为array [i]的存储阵列。因为它在for循环中,所以你设置storage [0] = array [0] [0]然后设置storage [0] = array [0] [1]。这使您只能获取阵列该维度中的最后一个数字。同样,当你正在阅读它们时,你会插入两次相同的数字。由于4和3是各自维度中的最后两个数字,因此表明您正在对数组进行排序。您需要一个for循环用于存储设置&lt; array.length并将值存储在其中。