.
"- сортировки. Знать реализацию и асимптотики для qsort, вставками (insertion), merge sort, radix sort. Уметь реализацию insertion, merge, radix.
- бинпоиск
- массивы, связные списки, хэштаблицы, приоритетные очереди - зачем, когда, асимптотики, примерно как реализованы. Уметь реализовать связные списки, простую хэштаблицу и приоритетную очередь (на бинарной куче достаточно)
- знать, что есть структуры для range minimum query типа дерева фенвика и дерева отрезков - зачем и когда нужны.
- графы. Как хранить графы - матрица смежности, списки смежности.
- обход графа. BFS, DFS. Уметь реализовывать, знать разницу.
- алгоритмы на графах. Флойд, Дейкстра, А*, Прим/Крускал - че это и зачем, асимптотики либо помнить, либо уметь быстро в голове посчитать/реализовывать.
- деревья. Уметь реализовывать деревья. Обход в глубину и в ширину (bfs, dfs). Что такое сбалансированное дерево, дерево бинпоиска. Знать про существование avl, red-black, b-tree (реализацию на мой взгляд нафиг не надо помнить).
- строки. Суффиксное, префиксное дерево - асимптотики и уметь реализовывать без свистелок (без склейки узлов). Алгоритмы поиска подстрок - z-function, Кнут-Моррис-Пратт, использование хэш-функций
- динамика. ну и вдогонку можно еще игры потренить и разобраться со Шпрага-Гранди."