С одной стороны, легко увидеть данную ключевую функцию, можно легко реализовать сортировку, которая делает то же самое, используя функцию сравнения.Сокращение выглядит следующим образом:
def compare(x,y):
return key(x) - key(y)
С другой стороны, как мы можем точно знать, что мы не теряем потенциальную сортировку, ограничивая все виды сортировки картой элементов с использованием ключа?Например, предположим, что я хочу отсортировать список кортежей длиной 2 (x, y), где я настаиваю на следующем методе сравнения:
def compare(tup1,tup2):
if (tup1[1] < tup2[0]):
return -1
if (tup1[0] % 2 == 0):
return 1
if (tup1[0] - tup2[1] < 4):
return 0
else:
return 1
Теперь скажите мне, как мне перевести это сравнение в соответствующий "ключ""Функция такова, что мой алгоритм сортировки происходит так же?Это не надуманный пример, так как эти виды настраиваемой сортировки обнаруживаются в алгоритмах нарушения симметрии во время поиска, и это очень важно.