Отсортировать по убыванию элементов последнего столбца целочисленный двухмерный массив 5×4.
На языке Python.
Ответы
Ответ:
array = [[1,2,3,4,5], [5,2,5,7,2], [8,12,56,3,0], [12,12,12,12,12]]
array.sort(key = lambda x: x[-1], reverse=True)
print(array)
5*4 - это не точное описание размерности. Я сделал 4 объекта по 5 элементов, так принято измерять матрицы - сначала строки, потом столбцы, но может быть и наоборот.
Функия sort у списков опционально принимает параметр key, в который можно записать лямбду для преобразования исходных элементов массива в какие-то иные, чтоб сравнивать затем уже их.
То есть если передан key, то будут сраниваться не сами объекты массива, а то, что вернула лямбда, применённая к каждому из объектов. Вот мы как раз и хотим, чтоб сравнивались не сами массивы, а их последние элементы.
Мы знаем, что объекты массива верхнего уровня - это тоже массивы, а значит лямбда будет принимать массивы длиной 5 элементов, и для каждого из них надо будет отдать последний элемент под индексом 4. Можно было написать lambda x: x[4], но проще воспользоваться фичей питона - отрицательными индексами.
Ну и reverse указываем, потому что по умолчанию sort сортирует по возрастанию (неубыванию)
arr = [[randint(0, 100) for j in range(4)] for i in range(5)]
print('\n'.join([''.join([str(f'{i:3}') for i in row]) for row in arr]))
print()
for i in range(4):
___ for j in range(i + 1, 5):
___ if arr[i][-1] < arr[j][-1]:
______ arr[i][-1], arr[j][-1] = arr[j][-1], arr[i][-1]
print('\n'.join([''.join([str(f'{i:3}') for i in row]) for row in arr]))
5 2 5 7 2
8 12 56 3 0
12 12 12 12 12
12 12 12 12 12
1 2 3 4 5
5 2 5 7 2
8 12 56 3 0