Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 需要家庭作业方面的帮助吗_Java_Sorting - Fatal编程技术网

Java 需要家庭作业方面的帮助吗

Java 需要家庭作业方面的帮助吗,java,sorting,Java,Sorting,这就是赋值:编写一个方法,用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_arr

这就是赋值:编写一个方法,用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;
}

}
publicstaticvoidmain(字符串[]args){
双[][]数组={{1,4},{2,3};
双[]新数组=排序(数组);
for(int i=0;i列表[j+1]){
温度=列表[j];
列表[j]=列表[j+1];
列表[j+1]=温度;
更改=正确;
}
}同时(改变);
退货清单;
}
}

您遇到的主要问题是如何将值从2d数组复制到1d数组中。实际上,您只需将两个值复制到长度为2的数组中。二维阵列的长度不是完整的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];
        }
    }
double[]存储=新的double[4]//你应该计算这个值
int k=0;
for(int i=0;i

冒泡排序工作正常,但随后将值复制回错误的位置。尝试在排序后打印阵列存储,您将看到它现在是正确的。

您正在覆盖存储阵列,并将其设置为array[i]。因为它在for循环中,所以您要设置存储[0]=数组[0][0],然后设置存储[0]=数组[0][1]。这将导致您只拾取该数组维度中的最后一个数字。同样地,当你把它们读回时,你将同样的数字插入两次。由于4和3是其各自维度中的最后两个数字,这表明您正在对数组进行排序。您需要为设置为欢迎使用SO。不幸的是,这个网站不是这样工作的。你不能只是在这里转储代码,然后期望有人阅读所有代码并为你调试。您是否尝试过在调试器中单步执行它?这通常是第一件要做的事。请阅读和以获取关于在此处发布问题的指导原则。非常感谢这是我一直在寻找的:)