Деление на ноль

Наглядные анимации алгоритмов

Запускайте, останавливайте и листайте по шагам - чтобы увидеть, как алгоритм думает

Сортировки

.oO
Bubble Sort
Сортировка пузырьком
Классика жанра: соседние элементы сравниваются и меняются местами, а наибольшие "всплывают" в конец массива.
_v_
Selection Sort
Сортировка выбором
Находим самый маленький элемент в неотсортированной части и ставим его на правильное место. Минимум обменов.
_↓_
Insertion Sort
Сортировка вставками
Берем элементы по одному и вставляем их в правильное место отсортированной части массива. Отлично работает на почти отсортированных данных.
///
Shell Sort
Сортировка Шелла
Улучшенная сортировка вставками: элементы сравниваются и обмениваются на больших расстояниях, которые постепенно уменьшаются до единицы.
Y
Merge Sort
Сортировка слиянием
Разделяй и властвуй: массив рекурсивно делится пополам, а затем отсортированные половины сливаются обратно.
<|>
Quick Sort
Быстрая сортировка
Разделяй и властвуй: опорный элемент делит массив на меньшие и большие. Две схемы разбиения - Хоара и Ломуто.
++
Counting Sort
Сортировка подсчетом
Сортировка без единого сравнения: считаем, сколько раз встречается каждое значение, и собираем результат.
/\
Heap Sort
Пирамидальная сортировка
Массив как двоичное дерево: строим кучу, забираем максимум из корня и просеиваем новый. O(n log n) на любых данных.
(o)
Cycle Sort
Сортировка циклами
Минимум записей в массив: каждый элемент записывается ровно один раз на свое финальное место через циклы перестановок.
123
Radix Sort
Поразрядная сортировка
Сортировка по разрядам: числа распределяются по корзинам 0..9 последовательно от младшего разряда к старшему.
[U]
Bucket Sort
Блочная сортировка
Распределение элементов по корзинам-диапазонам с последующей сортировкой внутри корзин и сборкой в единый результат.
[T]
Tournament Sort
Турнирная сортировка
Построение турнирной сетки на выбывание: элементы играют матчи, чемпион забирается в корень, а матчи переигрываются за O(log n).
HDD
External Merge Sort
Внешняя сортировка
Для данных, не влезающих в оперативную память: нарезаем файл на отсортированные прогоны, затем сливаем их через буфер.
[Tim]
Timsort
Сортировка Timsort
Адаптивный гибрид вставок и слияния: находит естественные прогоны, добирает их вставками и эффективно сливает.

Поиск

Основы алгоритмов

Каждая анимация написана нами с нуля: никаких тяжелых библиотек, только чистый JavaScript. Можно менять набор данных (случайный, почти отсортированный, обратный и другие), регулировать скорость и ходить по шагам вперед и назад. Раздел постоянно растет: впереди наглядные структуры данных, деревья и алгоритмы на графах, а со временем - и самые неожиданные уголки информатики.