/ / Bubble-Sort 2D масив - java, масиви, сортування

Bubble-Sort 2D масив - java, масиви, сортування

Мені потрібно побудувати код, який міхур сортувати 2D масив. Хитрість тут полягає в тому, що я не можу використовувати помічника одновимірного масиву або переміщувати елементи в інший масив.

Сортування має бути на 2D масиві.

Тепер я побудував свою функцію. Але щось не так. Це мій висновок

1      1      2      6     12     32
49     44     54     55    100    344

це близько, щоб бути зроблено, і я не можу думати, як це зробити.

 public static int [] [] sortMatrix(int[][]matrix){
for(int x = matrix.length  ; x >0  ; x-- ){
for(int i = matrix[0].length  ; i > 0 ; i-- ){
for(int j = 0 ; j < x  ; j++){
for(int t = 0 ;t < i    ;  t++){
if(t < matrix[0].length - 1 && matrix[j][t] > matrix[j][t+1] ){
swap(matrix , j , t, t+1);
}
else if(t == matrix[0].length - 1 && j != matrix.length -1&& matrix[j][t] > matrix[j+1][0] ){
swap1(matrix ,j , t , j + 1);
}
}
}
}
}

Відповіді:

0 для відповіді № 1

Нижче наведено код для сортування 2D-масиву, трюк полягає в тому, що ви повинні думати про 2D-масив як про одновимірному масиві, а потім вивести відповідні рядки, зміщені пари для індексів.

import java.util.Arrays;

public class Bubble2DSort {
public static void main(String[] args) {
System.out.println("Started");

int[][] matrix = {{49,44,54,55,100,344}, {1,1,2,6,12,32}};

sortMatrix(matrix);

System.out.println("Printing output ");

for(int[] rowArr : matrix) {
System.out.println(Arrays.toString(rowArr));
}
}

private static void sortMatrix(int[][] matrix) {
int row = matrix.length;
int col = matrix[0].length;
int totalCount = row * col;

System.out.println("totalCount : " +totalCount);

boolean noSwaps = false;
for(int i = 0; !noSwaps; i++) {
noSwaps = true;

for(int j = 1; j < totalCount - i; j++) {
int currentRow = (j-1) / col;
int currentOffset = (j-1) % col;
int nextRow = j / col;
int nextOffset = j % col;

if( matrix[currentRow][currentOffset] > matrix[nextRow][nextOffset]) {
//swapping
int temp = matrix[nextRow][nextOffset];
matrix[nextRow][nextOffset] = matrix[currentRow][currentOffset];
matrix[currentRow][currentOffset] = temp;

noSwaps = false;
}
}
}
}
}

Вихід:

Started
totalCount : 12
Printing output
[1, 1, 2, 6, 12, 32]
[44, 49, 54, 55, 100, 344]