Вопросы для теоретической части зачета весной 2021 г.

  1. Цели и задачи программирования. Парадигмы программирования.
  2. Языки программирования низкого и высокого уровня. Трансляторы.
  3. Быстродействие алгоритмов.
  4. Метод «пузырька», сортировка выбором и вставками.
  5. Рекурсивные и нерекурсивные алгоритмы. Принцип «разделяй и властвуй». Алгоритмы поиска элементов в массиве.
  6. Быстрая сортировка Хоара (Quicksort). Пирамидальная сортировка (Heapsort).
  7. Сортировка слиянием. Сортировка подсчетом. Поразрядная сортировка.
  8. Алгоритмы поиска подстроки в строке: метод грубой силы, алгоритм Боуэра-Мура, алгоритм Рабина-Карпа.
  9. Модули. Реализация модулей в Python.
  10. Составные типы данных, два основных вида.
  11. Понятие об абстрактном типе данных. Стеки и очереди. Связанные списки.
  12. Дерево как структура данных. N-арные и двоичные деревья.
  13. Деревья поиска. Реализация операций над ними.
  14. Балансировка деревьев поиска. АВЛ-деревья. 2-3-4 деревья. Красно-черные деревья.
  15. Очередь с приоритетом, двоичная куча.
  16. Хеш-таблицы: идея и интерфейс. Хеш-функции и требования к ним. Решение проблемы конфликтов с помощью динамического массива списков.
  17. Открытая адресация в хеш-таблице. Кукушиное хеширование. Сходства и отличия между хеш-таблицей и деревом поиска. Криптографические хеш-функции.