Код++

Сортировка Шелла. Интерактивная анимация

Сортировка Шелла — обобщение сортировки вставками, поэтому сперва нужно разобраться с ней.

Скажем, что сперва шаг сортировки равен 5 (на практике это число должно быть другим). Получается пять цветных массивов, которые сортируются по отдельности. Как? С помощью сортировки вставками. До и после:

Читать далее →

Сортировка вставками. Интерактивная анимация

Идея сортировки: берём очередной элемент из ещё не отсортированной части массива (серый цвет) и ищем для него подходящее место в уже отсортированной части массива (чёрный цвет).

Читать далее →

Гномья сортировка. Интерактивная анимация

Идея гномьей (наивной) сортировки такова. Представим, что числа — это горшочки. Гном начинает проверять горшочки слева направо. Пока они упорядочены по возрастанию, он просто продолжает проверять дальше. Как только он встречает горшок, который не на своём месте, он постепенно возвращается влево, находя ему подходящее место. Как только горшочек поставлен куда нужно, гном продолжает идти вправо.

Читать далее →

Сортировка выбором. Интерактивная анимация

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

Читать далее →

Сортировка пузырьком. Интерактивная анимация

Это первая часть проекта. Далее будут сортировка выбором, гномья сортировка («глупая»), сортировка вставками, сортировка Шелла, слиянием, кучей и сортировка Хоара (быстрая).

Сортировка пузырьком известна многим. Её идея очень проста: берём пары соседних элементов и меняем их местами, если порядок неверный. И так много раз.

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

Читать далее →

Полиморфная кухня — 5. C++11 и C++14

В пятой части серии рассмотрим возможности наследования и полиморфизма, которые появились в стандарте C++11, а также C++14.

Возьмём иерархию из предыдущей статьи (исходный текст см. там же).

Читать далее →

Полиморфная кухня — 4. Приведение dynamic_cast и RTTI

Как у наших ворот за горою
Жил да был бутерброд с колбасою.
Захотелось ему прогуляться,
На траве-мураве поваляться.
И сманил он с собой на прогулку
Краснощёкую сдобную булку.
Корней Чуковский

В трёх первых частях серии мы подробно рассмотрели многие аспекты, касающиеся наследования и полиморфизма в C++. Сегодня поговорим о динамическом приведении типа и об идентификации типа на этапе исполнения программы.

Во вводной статье мы уже рассматривали приведение типа static_cast, которое имеет ограниченное применение. Когда дело касается приведения между типами, которые являются полиморфными (имеющими хотя бы одну виртуальную функцию), используется dynamic_cast (с неполиморфными классами это даже не скомпилируется).

Как всегда, придумаем какую-нибудь несложную иерархию.

Читать далее →
3 2 1