Доброго времени суток, читатели, зрители моего канала programmer's notes, любители языка Python. Не забывайте подписываться и писать свои
комментарии к моим статьям и видео.
Смешанный алгоритм пузырьком и выбором на Python
Вообще сортировка пузырьком имеет множество разновидностей и смесей с другими сортировками. Она легче всего поддаётся внедрению в неё других сортировок. Вот и сейчас рассмотрим её смесь с сортировкой выбором.
Напомним, как происходит сортировка выбором.
0. Пусть i = 0 (временный минимум)
1. Просматриваем массив с элемента i и находим индекс самого маленького элемента j.
2. Обмениваемся элементами i и j.
3. Увеличиваем i на 1. Если получаем индекс последнего элемента, то заканчиваем процесс, если нет, то обращаемся пункту с номером 1.
Алгоритм пузырьковой сортировки напоминать не буду. Попробуем при каждом проходе по списку ("всплывание пузырька") одновременно искать минимальный элемент, как это делается при сортировке выбором.
Получаем следующую программу. Тут важно обратить внимание на переменную min. Она содержит индекс временного минимума. При проходе (внутренний цикл) её значение может меняться, если мы встречаем элемент меньший чем для старого значения min. Одновременно при проходе каждый раз вытаскивается самой большой элемент и ставится на самое старшее место на отрезке прохода. При этом фрагмент, на котором осуществляется проход уменьшается и с лева и справа: i, n - 1 - i.
Предыдущая статья по сортировке...
Следующая статья по сортировке...
Отличного программирования, друзья. Оставляйте свои комментарии, не забывайте про лайки и подписывайтесь на мой канал programmer's notes.