Слайд 2Шейкерная сортировка (cocktail sort, shaker sort), или сортировка перемешиванием - усовершенствованная разновидность сортировки пузырьком, при которой сортировка производиться в двух направлениях, меняя
![Шейкерная сортировка (cocktail sort, shaker sort), или сортировка перемешиванием - усовершенствованная разновидность](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1150239/slide-1.jpg)
направление при каждом проходе.
Слайд 3Рассматриваемый алгоритм имеет несколько непохожих друг на друга названий. Среди них: сортировка
![Рассматриваемый алгоритм имеет несколько непохожих друг на друга названий. Среди них: сортировка](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1150239/slide-2.jpg)
перемешиванием, двунаправленная пузырьковая сортировка, шейкерная сортировка, пульсирующая сортировка (ripple sort), трансфертная сортировка (shuttle sort), и даже сортировка «счастливый час» (happy hour sort).
Слайд 4Второй вариант (двунаправленная пузырьковая сортировка) наиболее точно описывает процесс работы алгоритма. Здесь,
![Второй вариант (двунаправленная пузырьковая сортировка) наиболее точно описывает процесс работы алгоритма. Здесь,](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1150239/slide-3.jpg)
в его название, довольно-таки удачно включен термин «пузырьковая». Это действительно альтернативная версия известного метода, модификации в котором заключаются, по большей части, в реализации, упомянутой в названии, двунаправленности: алгоритм перемещается, ни как в обменной (пузырьковой) сортировке – строго снизу вверх (слева направо), а сначала снизу вверх, потом сверху вниз.
Слайд 5Перестановка элементов в шейкерной сортировке выполняется аналогично той же в пузырьковой сортировке, т.
![Перестановка элементов в шейкерной сортировке выполняется аналогично той же в пузырьковой сортировке,](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1150239/slide-4.jpg)
е. два соседних элемента, при необходимости, меняются местами. Пусть массив требуется упорядочить по возрастанию. Обозначим каждый пройденный путь от начала до конца последовательности через Wi, где i – номер пути; а обратный путь (от конца к началу) через —Wj, где j – номер пути.
Тогда после выполнения Wi, один из неустановленных элементов будет помещен в позицию справа, как наибольший из еще неотсортированных элементов, а после выполнения —Wj, наименьший из неотсортированных, переместиться в некоторую позицию слева. Так, например, после выполнения W1 в конце массива окажется элемент, имеющий наибольшее значение, а после —W1 в начало отправиться элемент с наименьшим значением.
Слайд 6Примеры записи кода:
Код программы на C++
![Примеры записи кода: Код программы на C++](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1150239/slide-5.jpg)
Слайд 7Примеры записи кода:
Код программы на Pascal
![Примеры записи кода: Код программы на Pascal](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1150239/slide-6.jpg)