Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/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_Arrays_Sorting - Fatal编程技术网

Java 在二维数组中对行中的元素进行排序

Java 在二维数组中对行中的元素进行排序,java,arrays,sorting,Java,Arrays,Sorting,我必须对每行中的元素进行排序,然后显示数组 例如,如果输入数组为: 5135 输入:764输出:467 9 8 2 2 8 9 我的代码是: for (int i = 0; i < size; i++) { //"size" is the size of the square matrix for (int j = 0; j < size; j++) { for (int k = 0; k < size - 1; k

我必须对每行中的元素进行排序,然后显示数组

例如,如果输入数组为:

5135
输入:764输出:467
9 8 2                  2 8 9
我的代码是:

for (int i = 0; i < size; i++) { //"size" is the size of the square matrix 
    for (int j = 0; j < size; j++) {
        for (int k = 0; k < size - 1; k++) {
            for (int l = 0; l < size - k - 1; l++) {
                if (arr[i][j] > arr[i][j+1]) { //arr[][] is of datatype int
                    int temp = arr[i][j];
                    arr[i][j] = arr[i][j+1];
                    arr[i][j+1] = temp;
                }
            }
        }
    }
}
for(int i=0;iarr[i][j+1]){//arr[][]是int数据类型
int temp=arr[i][j];
arr[i][j]=arr[i][j+1];
arr[i][j+1]=温度;
}
}
}
}
}
有什么建议吗?

我会做得更简单一些

    for(int[] r : arr){
        Arrays.sort(r);
    }
for(int i=0;iarr[i][k]){//arr[][]的数据类型为int
int temp=arr[i][j];
arr[i][j]=arr[i][k];
arr[i][k]=温度;
}
}
}
}

我认为您不需要第四个循环,我将创建一个方法来对行进行排序,然后在矩阵中遍历行,并一次对它们进行排序。例如:

public static int[] sortRow(int[] row) // selection sort
{
    for (int i = 0; i < row.length - 1; i++) {
        for (int j = i + 1; j < row.length; j++) {
            if (row[i] > row[j]) {
                int temp = row[i];
                row[i] = row[j];
                row[j] = temp;
            }
        }
    }
    return row;
}

public static void main(String args[]) 
{
    int[][] arr = {{5, 1, 3}, {7,6,4}, {9,8,2}};

    for (int r = 0; r < arr.length; r++) { // for every row in the matrix
        arr[r] = sortRow(arr[r]); // set the row to be the sorted row
    }

    // print out the array to the console
    for (int r[] : arr) {
        for (int c : r)
            System.out.print(c + " ");
        System.out.println();
    }
}

看起来像是家庭作业。你应该自己做…你的代码不工作吗?如果没有,它将产生什么样的产出?(感谢您提供预期输出!)您是否必须实现自己的排序算法???。。。你能使用内置的排序方法吗???我必须实现自己的排序方法,它产生的输出是:673674982um,你的循环变量是什么?@user3140017循环变量不明白你在问什么?哦,很抱歉,我的互联网连接有问题,所以看不到你的完整代码。而且,是的,它的工作,非常感谢你!!你能告诉我你是怎么想出这个逻辑的吗?@user3140017最重要的是,花点时间确保你完全理解这个简单的逻辑。甚至可以在一张纸上画出每个步骤……这是家庭作业,所以他不能使用
array.sort(array)
。但这种一次排序一行的想法肯定是更好的解决方案。
public static int[] sortRow(int[] row) // selection sort
{
    for (int i = 0; i < row.length - 1; i++) {
        for (int j = i + 1; j < row.length; j++) {
            if (row[i] > row[j]) {
                int temp = row[i];
                row[i] = row[j];
                row[j] = temp;
            }
        }
    }
    return row;
}

public static void main(String args[]) 
{
    int[][] arr = {{5, 1, 3}, {7,6,4}, {9,8,2}};

    for (int r = 0; r < arr.length; r++) { // for every row in the matrix
        arr[r] = sortRow(arr[r]); // set the row to be the sorted row
    }

    // print out the array to the console
    for (int r[] : arr) {
        for (int c : r)
            System.out.print(c + " ");
        System.out.println();
    }
}