Алгоритмы сортировки для чайников

Apr 16, 2011 23:01

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

Вам хочется кофе? Достаньте инструкцию с надписью "кофе" и отдайте слуге. Слуга прочитает (и выполнит) сотни элементарных действий - "повернись на север, сделай 10 шагов, повернись на восток и сделай ещё 3 шага, протяни правую руку влево и возьми банку с кофе...". Если слуга достаточно быстр, для вас это будет выглядеть, как появление в его руке чашечки с кофе вместо бумажки с надписью "кофе".

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

Вот один из вариантов сортировки:
1. Взять две верхние карты из колоды.
2. Младшую положить в новую колоду, старшую оставить на руках.
3. Взять из старой колоды следующую карту.
4. Перейти к пункту 2.
5. Когда старая колода кончится, переложить новую на место старой и вернуться к пункту 1.

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

Существуют и другие способы.

Недавно узнал про Bogosort или "обезьянью сортировку":
1. Проверить лежат ли все карты по порядку.
2. Если нет - подкинуть колоду в воздух, собрать карты с пола и перейти к пункту 1.

Вчера в интернете попалась шикарная постановка с исполнительными слугами и четырьмя алгоритмами сортировки колоды - http://www.youtube.com/user/AlgoRythmics

Один ролик процитирую прямо здесь

image Click to view

математика

Previous post Next post
Up