Ordene la matriz por filas y columnas usando Python
En este artículo, aprenderemos un programa Python para ordenar la matriz por filas y columnas.
Supongamos que hemos tomado una matriz MxM de entrada. Ahora ordenaremos la matriz de entrada dada en filas y columnas usando el bucle for anidado.
Algoritmo (pasos)
A continuación se detallan los algoritmos/pasos a seguir para realizar la tarea deseada. −
Cree una función sortingMatrixByRow() para ordenar cada fila de la matriz, es decir, por filas aceptando la matriz de entrada, m(nº de filas) como argumentos.
Dentro de la función, use el bucle for para recorrer las filas de una matriz.
-
Utilice otro bucle for anidado para recorrer todas las columnas de la fila actual.
Utilice la declaración condicional if para comprobar si el elemento actual es mayor que el siguiente elemento.
Intercambie los elementos usando una variable temporal si la condición es verdadera.
Cree otra función transposeMatrix() para obtener la transposición de una matriz aceptando la matriz de entrada, m(número de filas) como argumentos.
Utilice el bucle for para recorrer las filas de una matriz.
Utilice otro bucle for anidado para recorrer la columna del formulario (fila +1) hasta el final de las columnas.
Intercambie el elemento de fila y columna actual con el elemento de fila y columna.
Cree una función sortMatrixRowandColumn() para ordenar la matriz por filas y columnas aceptando la matriz de entrada, m(número de filas) como argumentos.
Dentro de la función, llame a la función sortingMatrixByRow() definida anteriormente para ordenar las filas de una matriz de entrada.
Llame a la función transposeMatrix() definida anteriormente para obtener la transposición de una matriz de entrada.
-
Una vez más ordene las filas de una matriz de entrada llamando a la función sortingMatrixByRow() definida anteriormente.
Una vez más, obtenemos la transposición de una matriz de entrada llamando a la función transposeMatrix() definida anteriormente.
Cree una función printingMatrix() para imprimir la matriz atravesando filas y columnas de una matriz utilizando un bucle for anidado.
Cree una variable para almacenar la matriz de entrada.
Cree otra variable para almacenar el valor de entrada m(número de filas)
Llame a la función printingMatrix() definida anteriormente para imprimir la matriz de entrada.
Llame a la función sortMatrixRowandColumn() definida anteriormente pasándole la matriz de entrada, m valores para ordenar la matriz filas y columnas.
Imprima la matriz de entrada resultante después de ordenar por filas y columnas llamando a la función printingMatrix() definida anteriormente.
Ejemplo
El siguiente programa devuelve la matriz ordenada por filas y columnas para la matriz de entrada dada utilizando bucles for anidados:
# creating a function for sorting each row of matrix row-wise
def sortingMatrixByRow(inputMatrix, m):
# traversing till the length of rows of a matrix
for p in range(m):
# Sorting the current row
for q in range(m-1):
# checking whether the current element is greater than the next element
if inputMatrix[p][q] >inputMatrix[p][q + 1]:
# swapping the elements using a temporary variable
# if the condition is true
tempVariable = inputMatrix[p][q]
inputMatrix[p][q] = inputMatrix[p][q + 1]
inputMatrix[p][q + 1] = tempVariable
# creating a function to get the transpose of a matrix
# by accepting the input matrix, m values as arguments
def transposeMatrix(inputMatrix, m):
# traversing through the rows of a matrix
for p in range(m):
# Traversing from row +1 column to last column
for q in range(p + 1, m):
# Swapping the element at index (p,q) with (q,p)
temp = inputMatrix[p][q]
inputMatrix[p][q] = inputMatrix[q][p]
inputMatrix[q][p] = temp
# creating a function for sorting the matrix rows column-wise
def sortMatrixRowandColumn(inputMatrix, m):
# sorting the rows of an input matrix by
# calling the above defined sortingMatrixByRow() function
sortingMatrixByRow(inputMatrix, m)
# getting the transpose of an input matrix by
# calling the above defined transposeMatrix() function
transposeMatrix(inputMatrix, m)
# once again sorting the rows of an input matrix by
# calling the above defined sortingMatrixByRow() function
sortingMatrixByRow(inputMatrix, m)
# once again getting the transpose of an input matrix(So we sorted the columns)
transposeMatrix(inputMatrix, m)
# creating a function to print the matrix
def printingMatrix(inputMatrix, rows):
# Traversing in the rows of the input matrix
for i in range(rows):
# Traversing in the columns corresponding to the current row
# of the input matrix
for j in range(rows):
print(inputMatrix[i][j], end=" ")
# Printing a new line to separate the rows
print()
# input matrix
inputMatrix = [[2, 6, 5],
[1, 9, 8],
[7, 3, 10]]
# input m value representing 3x3 matrix
# (dimensions)
m = 3
print("Input Matrix:")
# printing the input matrix by calling the above
# printingMatrix() function
printingMatrix(inputMatrix, m)
# calling the above defined sortMatrixRowandColumn() function
# by passing the input matrix, m values to it to
# sort the matrix row and column-wise
sortMatrixRowandColumn(inputMatrix, m)
# printing the input matrix after sorting row and column-wise
# by calling the above printingMatrix() function
print("Input Matrix after sorting row and column-wise:")
printingMatrix(inputMatrix, m)
Producción
Tras la ejecución, el programa anterior generará el siguiente resultado:
Input Matrix:
2 6 5
1 9 8
7 3 10
Input Matrix after sorting row and column-wise:
1 5 6
2 7 9
3 8 10
Complejidad del tiempo − O(n^2 log2n)
Espacio auxiliar − O(1)
Conclusión
En este artículo, aprendimos cómo usar Python para ordenar la matriz dada tanto por filas como por columnas. Además, aprendimos cómo transponer la matriz dada y cómo ordenar la matriz por filas usando bucles for anidados (en lugar de utilizar el método integrado sort()).