Top.Mail.Ru
Ответы

Сортировка перемешиванием (шейкерная сортировка) - алгоритм?

Опишите пожалуйста алгоритм сортировки перемешиванием. Если можно с примером (с++, fortran)

Просьба: не копируйте информацию с википедии и викиучебника, там ничего путёвого нет!
Спасибо!

По дате
По рейтингу
Аватар пользователя
Новичок
13лет

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

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

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

в любом из этих вариантов после пробега по массиву поиск перескакивает на "начало" и снова движется от начала к концу.

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

иллюстрация с википедии очень наглядно показывает работу метода (да и псевдокод данный в английской версии статьи понятен и малышу)

Аватар пользователя
Мастер
13лет

Чего его описывать? Гуглом не судьба воспользоваться?