Перейти к содержимому

Как отсортировать матрицу python

  • автор:

Сортировка матрицы

Дана матрица n * m , нужно отсортировать и вывести колонками от самого маленького к самому большому, у меня не выходит сделать, смотреть ниже. Мой код:

n , m = map(int,input().split()) matrix = [list(map(int,input().split())) for i in range(n)] matrix_copy = copy.deepcopy(matrix) li = [] for i in range(n): for j in range(m): li.append(matrix[i][j]) li.sort() k = -1 for i in range(n): for j in range(m): k +=1 matrix_copy[i][j] = li[k] x = (list(zip(*matrix_copy))) for i in x: print(*i) 

Вход: n — количество строк, m- количество колонок, потом вводим матрицу нужного размера. Как работает у меня:

input: 3 3 4 1 3 2 5 7 9 8 6 output: 1 4 7 2 5 8 3 6 9 input: 1 3 4 2 1 output: 1 2 4 input: 3 1 9 7 8 output: 7 8 9 

Как должно быть:

input0: 3 3 4 1 3 2 5 7 9 8 6 output0: 1 4 7 2 5 8 3 6 9 input1: 1 3 4 2 1 output1: 1 2 4 input2: 3 1 9 7 8 output2: 7 8 9 

Сортируйте матрицу по строкам и по столбцам, используя Python

В этой статье мы изучим программу на Python для сортировки матрицы по строкам и столбцам.

Предположим, мы взяли входную матрицу MxM. Теперь мы отсортируем данную входную матрицу по строкам и по столбцам, используя вложенный цикл for.

Алгоритм (шаги)

Ниже приведены алгоритмы/шаги, которые необходимо выполнить для выполнения желаемой задачи. −

    Создайте функцию sortingMatrixByRow() для сортировки каждой строки матрицы, т. е. по строкам, принимая входную матрицу m (количество строк) в качестве аргументов.

Пример

Следующая программа возвращает отсортированную матрицу по строкам и столбцам для данной входной матрицы, используя вложенные циклы for:

# 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) 

Выход

При выполнении вышеуказанная программа сгенерирует следующий вывод:

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 

Временная сложность — O(n^2 log2n)

Вспомогательное пространство – O(1)

Заключение

В этой статье мы узнали, как использовать Python для сортировки заданной матрицы как по строкам, так и по столбцам. Кроме того, мы узнали, как транспонировать данную матрицу и как сортировать матрицу по строкам, используя вложенные циклы for (вместо использования встроенного метода sort()).

Python-сообщество

[RSS Feed]

  • Начало
  • » Python для новичков
  • » Сортировка строк матрицы по минимальному элементу строки

#1 Дек. 29, 2020 16:10:29

Typical_beginer Зарегистрирован: 2020-12-29 Сообщения: 12 Репутация: 0 Профиль Отправить e-mail

Сортировка строк матрицы по минимальному элементу строки

Дана матрица и нужно её преобразовать таким образом,чтобы строки матрицы были отсортированы в зависимости от минимального элемента каждой строки.
То есть входные данные такие

[7,2,5,12] [10,7,3,22] [23,45,6,1] [16,4,9,34] 

А выходные должны быть такими

[23,45,6,1] - мин.эл 1 [7,2,5,12] - мин.эл 2 [10,7,3,22] - мин.эл 3 [16,4,9,34] - мин.эл 4 

Функцию Sort() использовать нельзя Было сделано следующее

A1=[[1.3, 2.5, 4.5, 0.8], [0.1, 4.2, 3.4, 2.8], [3.1, 1.7, 2,2, 4.5], [0.3, 0.6, 5,1, 0.7], [2.5, 3.5, 0.4, 5.3], [1.2, 2.4, 1.8, 7.2]] print("Сформированная матрица:") for i in range(len(A1)): for j in range(len(A1[i])): print(A1[i][j], end = ' ') print() print("Преобразованная матрица") min=0; for i in range(len(A1)): for j in range(len(A1[0])): if A1[i[j] A1[0]j]: min= A1[i][j] A1[i][j]= A1[0][j]; A1[0][j]= min print(" Минимальный элемент", i," строки = ", min) for i in range(len(A1)): for j in range(len(A1[i])): print(A1[i][j], end = ' ') print() 

В коде выше, вывел матрицы с помощью цикла нахожу минимальный элемент,заношу его в специальную переменную min но что именно дальше делать?Нашёл минимальный элемент,как сделать сортировку строк не используя sort()

Отредактировано Typical_beginer (Дек. 29, 2020 16:18:02)

Программа Python для сортировки двумерного массива по столбцам

Когда объявлен двумерный или двумерный массив, он рассматривается как матрица. Итак, мы знаем, что матрица состоит из строк и столбцов. Процесс сортировки элементов, принадлежащих определенному столбцу матрицы, в порядке возрастания или убывания, известен как сортировка двумерного массива по столбцам. Давайте рассмотрим алгоритм, за которым следует сценарий ввода-вывода, чтобы понять точное применение этой концепции.

Сценарий ввода-вывода

Рассмотрим двумерный массив.

arr = [[ 7, 9, 5, 7 ], [9, 5, 9, 4], [2, 7, 8, 6], [ 8, 6, 6, 5]] 

Матричное представление вышеуказанного двумерного массива выглядит следующим образом:

7 9 5 7 9 5 9 4 2 7 8 6 8 6 6 5 

Теперь давайте отсортируем данную матрицу по столбцам в порядке убывания.

9 9 5 7 8 7 9 6 7 6 8 5 2 5 6 4 
  • Представление массива отсортированной матрицы:
[[9, 9, 9, 7 ], [7, 7, 8, 6], [8, 6, 6, 5], [ 2, 5, 5, 4 ]] 

Пример

В этом примере мы обсудим, как сортировать двумерный массив по столбцам. Шаги, которые необходимо выполнить для создания желаемой программы, следующие:

  • Шаг 1 — Объявить двумерный массив
  • Шаг 2 — Просмотрите все столбцы элементов, чтобы соответствующим образом отсортировать их.
  • Шаг 3 — Сравните элементы одного и того же столбца так, чтобы один элемент был меньше другого, следуя условию.
  • Шаг 4 — Поменяйте местами элементы, если условие не выполнено.
  • Шаг 5 — Продолжайте тот же процесс, пока все элементы в столбцах не будут покрыты, и, наконец, напечатайте массив в отсортированном виде.
def sort_the_array_column_wise(arr): for j in range (size): for i in range(size - 1): if arr[i][j] < arr[i + 1][j]: temp = arr[i][j] arr[i][j] = arr[i + 1][j] arr[i + 1][j] = temp for i in range(size): for j in range(size): print(arr[i][j], end=" ") print() arr = [[7, 9, 5, 7 ], [9, 5, 9, 4], [2, 7, 8, 6], [ 8, 6, 6, 5 ]] size = len(arr) print("The array before performing sorting operation is: ") for i in range(size): for j in range(size): print(arr[i][j], end=" ") print() print("The array after performing sorting operation is: ") sort_the_array_column_wise(arr) 

Выход

Вывод вышеуказанной программы следующий:

The array before performing sorting operation is: 7 9 5 7 9 5 9 4 2 7 8 6 8 6 6 5 The array after performing sorting operation is: 9 9 9 7 7 7 8 6 8 6 6 5 2 5 5 4 

Заключение

Мы ясно видим, что выходные данные фактически соответствуют ожидаемому результату в приведенном выше примере. Точно так же сортировку двумерного массива по строкам можно выполнить, изменив несколько операторов в приведенной выше программе. Вот как работает концепция сортировки 2D-массивов по столбцам.

Все права защищены. © Linux-Console.net • 2019-2023

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *