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();
}
}