Я действительно не знаю, подходит ли такой вопрос на этом сайте. В настоящее время я пытаюсь понять алгоритмы сортировки, и мне пришел в голову новый алгоритм сортировки списка чисел, и я хотел его реализовать.
Итак, вот результат:
def sort(obj: list) -> list:
result = []
for _ in range(len(obj)):
_biggest = 0
for i in obj:
_biggest = i if i > _biggest else _biggest
_lowest = _biggest
for i in obj:
_lowest = i if _lowest > i else _lowest
result.append(_lowest)
obj.remove(_lowest)
return result
Этот алгоритм сначала получает наибольшее значение в данном списке, затем находит наименьшее значение с помощью наибольшего значения, добавляет наименьшее найденное значение в новый список с именем result
и, наконец, удаляет наименьшее значение из исходного списка. Зацикливает это, пока список не станет пустым.
Я погуглил все самые быстрые алгоритмы сортировки, и этот оказался быстрее многих из них. Поэтому я решил выяснить, существует ли уже алгоритм, который я придумал, или нет, но я не смог найти ни одного алгоритма, который бы так работал.
Я уверен, что я не единственный, кто нашел этот путь. Как называется этот алгоритм? Есть ли недостаток этого алгоритма, который делает его неправильным?
Алгоритм сортировки выбором. Кроме того, это можно улучшить, используя MAX_INT для самого большого, чтобы вы могли исключить первый цикл, чтобы найти самое большое значение. Это увеличило бы его сложность от N×2N до N×N.
Вау, я не единственный: D Большое спасибо за ответ и предложение!
Может быть, вы имели в виду сначала найти значение Максимум? Тогда это выглядит как сортировка выбором.