Форум сайта python.su
Дана матрица и нужно её преобразовать таким образом,чтобы строки матрицы были отсортированы в зависимости от минимального элемента каждой строки.
То есть входные данные такие
[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
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()
Отредактировано Typical_beginer (Дек. 29, 2020 16:18:02)
Офлайн
https://www.w3schools.com/python/ref_func_min.asp
https://www.tutorialspoint.com/python/python_lists.htm
https://www.w3schools.com/python/python_dictionaries.asp
а вобще https://younglinux.info/algorithm/bubble
ну или вот
test = [[7, 2, 5, 12], [10, 7, 3, 22], [23, 45, 6, 1], [16, 4, 9, 34]] mini = {} for i in test: mini.update({min(i): i}) result = [] for i in range(len(mini)): tmp = min(mini) result.append(mini.pop(tmp)) print(result)
[[23, 45, 6, 1], [7, 2, 5, 12], [10, 7, 3, 22], [16, 4, 9, 34]]
Отредактировано AD0DE412 (Дек. 29, 2020 20:06:44)
Офлайн
Здесь используется алгоритм такой:
1. Составить список минимальных элементов строк матрицы.
2. Отсортировать сортировкой выбором по возрастанию список минимальных элементов матрицы. При перестановках элементов списка минимальных элементов матрицы таким же образом переставлять строки матрицы.
>>> mtx = [[7, 2, 5, 12], ... [10, 7, 3, 22], ... [23, 45, 6, 1], ... [16, 4, 9, 34]] >>> >>> min_list = [] >>> for i in range(len(mtx)): ... min_elem = mtx[i][0] ... for j in range(len(mtx[0])): ... if mtx[i][j] < min_elem: ... min_elem = mtx[i][j] ... min_list.append(min_elem) ... >>> min_list [2, 3, 1, 4] >>> >>> for i in range(len(min_list) - 1): ... for j in range(i + 1, len(min_list)): ... if min_list[i] > min_list[j]: ... min_list[i], min_list[j] = min_list[j], min_list[i] ... mtx[i], mtx[j] = mtx[j], mtx[i] ... >>> min_list [1, 2, 3, 4] >>> mtx [[23, 45, 6, 1], [7, 2, 5, 12], [10, 7, 3, 22], [16, 4, 9, 34]] >>>
Отредактировано py.user.next (Дек. 29, 2020 22:43:44)
Офлайн
Большое спасибо вам
Офлайн