Как стать автором
Обновить

Комментарии 9

спасибо за статью, сейчас подумал,

предположим есть исходный массив

[  0  1  2  3  4  5  6 ] индексы

[ 78 06 82 67 55 44 34 ] значения

создаём еще один массив от 0 до 82 размер

вставляем значения индексами в индексы тоесть 78 в 78)

считываем последовательно в новый )

В первом примере (пузырьковой сортировке) есть ряд критичных и не очень проблем:

  1. Код не будет работать. Седьмая строка должна быть такая: if __name__ == "__main__":

  2. Отступы у кода тут какие то слабенькие, вместо 4х пробелов всего лишь один

  3. Именование функций всё же рекомендуют согласно PEP-8: bubble_sort

  4. На любителя, но всё же, как по мне, оптимизированный пузырёк (Пузырьковая сортировка с проверкой завершения) будет по яснее и по эффективнее

P.S. Пробежал по всему коду глазами. В други местах "if name" такой же, как и в первом. Где то потерялись. У меня есть подозрение, что хабраредактор глючит.

В сортировке подсчётом (единственная, кстати, где название функции соответствует PEP-8) имеет смысл определять не только максимум, но и минимум и на это есть две причины:

  1. Экономия памяти: если сортировать массив, все значения в котором в основном больше миллиона, то миллион ячеек массива-счётчика так и останутся незаполненными.

  2. Поддержка отрицательных чисел: текущая версия алгоритма не способна отсортировать массив с отрицательными числами.

При этом сам код не сильно изменится. Размер массива будет равен разнице максимума и минимума плюс 1, а для получения индекса ячейки-счётчика нужно будет из значения элемента вычитать минимальное значение.

разумно, но всё равно прикольный алгоритм, впринипе максимум минимум можно получать при вставке поидее, а на пробежке по прямой просто по разнице делать, впринципе этот алгоритм расширяем до весов на ячейку наверно, ну а там другие методы можно подумать

Ну и как всегда, в статьях про сортировку написанных от теоретиков, чисто для рекламы в конце, нет ответов на самые главные вопросы про сортировки, которые могут возникнуть у читателей:

  1. Нахрена их столько? Вон взяли сортировку с наименьшей сложностью и используем везде.

  2. Для каждой из сортировок упомянутой в статье, раз уж решили упомянуть именно эти сортировки, а не какие-нибудь другие: в каких именно практических задач она оправданна? Где применяется, или применялась раньше? Если больше не применяется, то почему?

  3. Почему сортировки общего назначения используемые в разных языках когда мы вызываем какой-нибудь метод sort() из стандартной библиотеки - гибридные, а не какой-нибудь из вышеперечисленных методов? В статье вообще никак гибридные сортировки не упомянуты.

о! актуальная тема)

я скоро выложу новый алгоритм сортировки. Фундаментально новый.

Можно словить страйк за такую КПВД

Зарегистрируйтесь на Хабре, чтобы оставить комментарий