Como transformar matriz en array con java
Hola,
Este es el ejercicio.
Implementa una clase (OrdenacionBiDimensional) que contenga los métodos estáticos que
permitan hacer una ordenación de una matriz bidimensional (2D). En dicha clase tendremos un
método de ordenación de un array de los vistos en clase, por ejemplo, tendremos el método de
inserción. También tendremos un método que dada una matriz (2D) la transforme en un array
(1D). Además, tendremos otros dos métodos, uno que pase un array (1D) a una matriz (2D) por
filas y otro método que lo transforme por columnas, estos procesos los realizaremos una vez que
el array ya esté ordenado. También se implementarán otros dos métodos, uno para ordenar la
matriz (2D) por filas y otro para ordenar la matriz (2D) por columnas. Finalmente, tendremos
dos métodos, uno para mostrar la matriz (2D) y el otro para mostrar el array. Todo ello, tal y
como se puede observar en el diagrama de clases que se muestra a continuación.
y este es el código que tengo hecho y me falta la parte de transformarMatrizEnArray
public class OrdenacionBiDimensional {
public static String muestraMatriz(int[][] matriz) {
// TODO Auto-generated method stub
String Salida = "Matriz:" + "\n";
for (int i = 0; i < matriz.length; i++) {
for (int j = 0; j < matriz[i].length; j++) {
if (j != matriz[i].length - 1)
Salida += matriz[i][j] + "\t";
else
Salida += matriz[i][j];
}
if (i != matriz.length - 1)
Salida += "\n";
}
return Salida;
}
public static int[] transformarMatrizEnArray(int[][] matriz) {
return null;
}
public static String muestraArray(int[] array) {
// TODO Auto-generated method stub
String salida = "Array: " + "[";
for (int i = 0; i < array.length; i++) {
if (i == array.length - 1) {
salida += array[i];
}
else {
salida += array[i] + "\t";
}
}
salida += "]";
return salida;
}
public static void insercion(int[] array) {
// TODO Auto-generated method stub
for (int i = 1; i < array.length; i++) {
int aux = array[i];
int j;
for (j = i - 1; j >= 0 && aux < array[j]; j--) {
array[j + 1] = array[j];
}
// Inserto el elemento (aux) en otroArrayEnteros[j + 1]
array[j + 1] = aux;
}
}
public static int[][] transformarArrayOrdenadoEnMatrizFilas(int[][] matriz,
int[] array) {
// TODO Auto-generated method stub
insercion(array);
int k=0;
for (int i=0; i<matriz.length;i++) {
for ( int j =0; j< matriz[i].length; j++){
matriz[i][j]= array[k];
k++;
}
}
return matriz;
}
public static int[][] transformarArrayOrdenadoEnMatrizColumnas(
int[][] matriz, int[] array) {
// TODO Auto-generated method stub
insercion(array);
int[][] matriz2 = new int[matriz[0].length][matriz.length];
int k=0;
for (int i=0; i<matriz2[0].length;i++) {
for ( int j =0; j< matriz2.length; j++){
matriz2[j][i] = array[k++];
}
}
return matriz2;
}
public static int[][] matrizOrdenadaPorFilas(int[][] matriz) {
// TODO Auto-generated method stub
int[][] nuevaMatriz = new int[matriz.length][matriz[0].length];
for (int i = 0; i < nuevaMatriz.length; i++) {
int[] array = new int[matriz[i].length];
for (int j = 0, k = 0; j < nuevaMatriz[i].length; j++, k++) {
array[k] = matriz[i][j];
}
insercion(array);
for (int k = 0, j = 0; k < array.length; k++, j++) {
nuevaMatriz[i][j] = array[k];
}
}
return nuevaMatriz;
}
public static int[][] matrizOrdenadaPorColumnas(int[][] matriz) {
// TODO Auto-generated method stub
int[][] nuevaMatriz = new int[matriz.length][matriz[0].length];
for (int j = 0; j < nuevaMatriz.length; j++) {
int[] array = new int[matriz[j].length];
for (int i = 0, k = 0; i < nuevaMatriz[j].length; i++, k++) {
array[k] = matriz[j][i];
}
insercion(array);
for (int k = 0, i = 0; k < array.length; k++, i++) {
nuevaMatriz[j][i] = array[k];
}
}
return nuevaMatriz;
}
}