Búsqueda de sitios web

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()).

Artículos relacionados: