Как реализовать key в сортировке?

Допустим, есть какая-нибудь сортировка, например, пузырьком:

def bubble_sort(array):   
    for i in range(len(array) - 1):    
        for j in range(len(array) - i - 1):    
            if array[j] > array[j + 1]:    
                array[j], array[j + 1] = array[j + 1], array[j]

bubble_sort([63, 80, 62, 69, 71, 37, 12, 90, 19, 67])

У меня есть массив кортежей вида: [('name', 5, 5), (...), (...)]

Я могу его отсортировать как мне нужно с помощью встроенной сортировки:
sorted(data, key=lambda x: (-x[1], x[0], -x[2]))

Как реализовать в своей сортировке (в данном случае в сортировке пузырьком) этот аргумент key? Чтобы он сортировал сначала по возрастанию, потом по убыванию, в общем, получить такой же функционал, который выше (как у встроенной сортировки)


Ответы (1 шт):

Автор решения: Stanislav Volodarskiy

Добавить параметр key, во всех сравнениях его использовать. Всё:

def bubble_sort(array, key=lambda x: x):   
    for i in range(len(array) - 1):    
        for j in range(len(array) - i - 1):    
            if key(array[j]) > key(array[j + 1]):    
                array[j], array[j + 1] = array[j + 1], array[j]
→ Ссылка