Комментарии 9
Вот хорошие статьи
https://habr.com/ru/articles/335920/
https://habr.com/ru/post/689738
спасибо за статью, сейчас подумал,
предположим есть исходный массив
[ 0 1 2 3 4 5 6 ] индексы
[ 78 06 82 67 55 44 34 ] значения
создаём еще один массив от 0 до 82 размер
вставляем значения индексами в индексы тоесть 78 в 78)
считываем последовательно в новый )
работает https://godbolt.org/z/4ea8z1n4W
ааааа он есть в статье вот я отсталый ) сорри)
В первом примере (пузырьковой сортировке) есть ряд критичных и не очень проблем:
Код не будет работать. Седьмая строка должна быть такая: if __name__ == "__main__":
Отступы у кода тут какие то слабенькие, вместо 4х пробелов всего лишь один
Именование функций всё же рекомендуют согласно PEP-8: bubble_sort
На любителя, но всё же, как по мне, оптимизированный пузырёк (Пузырьковая сортировка с проверкой завершения) будет по яснее и по эффективнее
P.S. Пробежал по всему коду глазами. В други местах "if name" такой же, как и в первом. Где то потерялись. У меня есть подозрение, что хабраредактор глючит.
В сортировке подсчётом (единственная, кстати, где название функции соответствует PEP-8) имеет смысл определять не только максимум, но и минимум и на это есть две причины:
Экономия памяти: если сортировать массив, все значения в котором в основном больше миллиона, то миллион ячеек массива-счётчика так и останутся незаполненными.
Поддержка отрицательных чисел: текущая версия алгоритма не способна отсортировать массив с отрицательными числами.
При этом сам код не сильно изменится. Размер массива будет равен разнице максимума и минимума плюс 1, а для получения индекса ячейки-счётчика нужно будет из значения элемента вычитать минимальное значение.
Ну и как всегда, в статьях про сортировку написанных от теоретиков, чисто для рекламы в конце, нет ответов на самые главные вопросы про сортировки, которые могут возникнуть у читателей:
Нахрена их столько? Вон взяли сортировку с наименьшей сложностью и используем везде.
Для каждой из сортировок упомянутой в статье, раз уж решили упомянуть именно эти сортировки, а не какие-нибудь другие: в каких именно практических задач она оправданна? Где применяется, или применялась раньше? Если больше не применяется, то почему?
Почему сортировки общего назначения используемые в разных языках когда мы вызываем какой-нибудь метод sort() из стандартной библиотеки - гибридные, а не какой-нибудь из вышеперечисленных методов? В статье вообще никак гибридные сортировки не упомянуты.
о! актуальная тема)
я скоро выложу новый алгоритм сортировки. Фундаментально новый.
Можно словить страйк за такую КПВД
Не пузырьком единым. Поговорим об алгоритмах сортировки