Сортировка выбором.
Допустим, у Вас на компьютере записана музыка и для каждого исполнителя хранится счётчик воспроизведений.
Вы хотите отсортировать список по убыванию счётчика воспроизведений, чтобы самые любимые исполнители стояли на первых местах.
Одно из возможных решений - пройти по списку и найти исполнителя с наибольшим количеством воспроизведений.
Этот исполнитель добавляется в новый список. Потом то же самое происходит со следующим по количеству воспроизведений исполнителем.
Продолжая действовать так, мы получаем отсортированный список.
В итоге, чтобы найти исполнителя с наибольшим значением счётчика воспроизведения, необходимо проверить каждый элемент в списке. Это делается за время O(n). При каждом выполнении операций количество элементов, которые нужно проверить, сокращается.
Со временем всё сведётся к проверке всего одного элемента. И общее время выполнения сводится к O(n2).
Алгоритм сортировки выбором лёгок для понимания, но медленно работает.
def my_function(music):
listen_max = 0
for i in music.values():
listen_max = i if i > listen_max else listen_max
new_unit = str
for a, b in music.items():
new_unit = a if b == listen_max else new_unit
return new_unit
# Дан словарь с композициями и количеством прослушиваний для каждой
music = {
"МАРИ КРАЙМБРЕРИ - Мне Так Повезло": 50,
"РУКИ ВВЕРХ - Чёрное Море": 90,
"MARY GU - Обожай": 80,
"АНИ ЛОРАК - Рядом, Но Не Вместе": 40,
"NATAN, СЛАВА - Ой всё": 70,
"БЬЯНКА - Любимый дождь": 30,
"JONY - Воздушный Сарафан": 100,
"ОЛЕГ МАЙАМИ - Мельница": 20,
"GAYAZOV$ BROTHER$ - Невеста": 60,
"КОРОЛЁВА НАТАША - Обниму": 20
}
music_sort = list() # создадим список, в который будем складывать композиции в порядке убывания популярности
for i in range (0, len(music)): # обработаем наш словарь в цикле столько раз, сколько у нас элементов в словаре, каждый раз выкидывая один элемент из словаря
result = my_function(music)
music_sort.append(result)
del music[result]
for i in music_sort:
print(i)