Найти - Пользователи
Полная версия: Сортировка строк матрицы по минимальному элементу строки
Начало » Python для новичков » Сортировка строк матрицы по минимальному элементу строки
1
Typical_beginer
Дана матрица и нужно её преобразовать таким образом,чтобы строки матрицы были отсортированы в зависимости от минимального элемента каждой строки.
То есть входные данные такие

 [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()
AD0DE412
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]]

зы в коде не обрабатывается ситуация когда у вас в разных list() одинаковые минимальные значения и как это вы хотели бы обработать я не знаю )
py.user.next
Здесь используется алгоритм такой:

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]]
>>>
Typical_beginer
Большое спасибо вам
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB