DanLevy.net

Тест: Структуры данных и алгоритмы

Сможете ли вы выполнить BS над бинарным деревом?

Добро пожаловать на мой тест по структурам данных и алгоритмам!

Этот тест проверит ваши знания о структурах данных (стек, списки, деревья и т.д.), алгоритмах и оценке временной сложности.

20 вопросов… Начинаем!

Какая структура данных лучше всего подходит для доступа LIFO (Last In, First Out)?

Стек лучше всего подходит для доступа LIFO. Очереди лучше всего подходят для доступа FIFO (First In, First Out).

LIFO означает: последним пришёл — первым вышел.

Какова временная сложность алгоритма, который всегда занимает одинаковое время выполнения, независимо от размера входных данных?

O(1) представляет собой постоянную временную сложность. Это означает, что алгоритм всегда занимает одинаковое время выполнения, независимо от размера входных данных.

Число действий не зависит от размера входа.

Какова временная сложность вычисления длины односвязного списка, если длина не хранится отдельно?

Если счётчик длины не хранится, чтобы вычислить длину односвязного списка, необходимо пройти каждый узел от головы до хвоста, что приводит к временной сложности O(n).

Без счётчика нужно посетить каждый узел.

Какова средняя временная сложность поиска элемента в сбалансированном бинарном дереве поиска?

В сбалансированном BST средняя временная сложность поиска составляет O(log n), потому что на каждом уровне пространство поиска уменьшается вдвое.

Сбалансированное дерево имеет логарифмическую высоту.

Какова временная сложность алгоритма Merge Sort в худшем случае?

Merge Sort всегда работает с худшей сложностью O(n log n), так как он неоднократно делит массив пополам и объединяет отсортированные подмассивы.

На каждом уровне сливаются все элементы.

Какая структура данных обычно используется для реализации поиска в ширину (BFS)?

BFS использует очередь для обхода узлов уровень за уровнем, обрабатывая их в порядке ширины (по “строке”).

Обход по уровням требует порядка FIFO.

Какой обход обнаруживает цикл в ориентированном графе по ребру, ведущему к вершине, всё ещё находящейся в стеке рекурсии?

Поиск в глубину (DFS) обычно используется для обнаружения циклов в графе, поддерживая стек рекурсии для отслеживания посещённых узлов.

Ребро в активный стек рекурсии замыкает цикл.

Какова временная сложность сортировки кучей в худшем случае?

Сортировка кучей сохраняет худшую временную сложность O(n log n), так как она строит кучу и многократно извлекает максимальный элемент.

Извлечение из кучи стоит логарифмическое время.

Какова средняя временная сложность доступа к элементу в хеш‑таблице?

Хеш‑таблицы имеют среднюю временную сложность O(1) при доступе к элементам, при условии хорошей хеш‑функции, минимизирующей коллизии.

Средняя оценка предполагает хорошее распределение хешей.

Какой набор содержит типичные операции, выполняемые со стеком?

Основные операции стека — Push (добавление элемента), Pop (удаление элемента) и Peek (просмотр верхнего элемента без его удаления).

Подумайте о добавлении, удалении и просмотре вершины.

Какой жадный алгоритм находит кратчайшие пути от одной вершины в графе с неотрицательными весами, выбирая следующую вершину через очередь с приоритетом?

Алгоритм Дейкстры часто применяется для нахождения кратчайшего пути в графах с неотрицательными весами ребер. Он использует приоритетную очередь для эффективного определения минимального расстояния.

Выбирается ближайшая ещё не обработанная вершина.

Какой набор содержит примеры самобалансирующихся двоичных поисковых деревьев?

AVL‑деревья и красно‑черные деревья являются типами самобалансирующихся деревьев, которые гарантируют, что дерево остаётся сбалансированным после каждой вставки или удаления.

Оба дерева поддерживают баланс после изменений.

Что необходимо определить в рекурсивной функции, чтобы предотвратить бесконечную рекурсию?

Базовый случай необходим в рекурсивной функции, чтобы остановить рекурсивные вызовы, когда выполнено определённое условие, предотвращая бесконечную рекурсию.

Рекурсии необходимо условие остановки.

Какие две основные операции у очереди?

Две основные операции в очереди — Enqueue (добавление элемента в конец) и Dequeue (удаление элемента из начала).

Добавляем в конец, удаляем из начала.

Каковы условия выполнения топологической сортировки графа?

Топологическую сортировку можно выполнить над графом, если он ориентирован и ацикличен (DAG). Такой порядок полезен в задачах планирования выполнения.

Цикл делает порядок зависимостей невозможным.

Какова временная сложность наивной рекурсивной реализации последовательности Фибоначчи?

Наивная рекурсивная реализация последовательности Фибоначчи имеет временную сложность O(2^n) из‑за обширных повторных вычислений для каждого числа Фибоначчи.

Одни и те же подзадачи вычисляются много раз.

Какая структура данных обычно используется для реализации приоритетной очереди?

Приоритетная очередь обычно реализуется с помощью кучи, потому что она обеспечивает эффективное извлечение элемента с наивысшим или наименьшим приоритетом.

Нужен быстрый доступ к экстремальному приоритету.

Какой набор перечисляет общие порядки обхода в глубину для бинарного дерева?

In-order, Pre-order и Post-order — это три распространённых порядка обхода в глубину для бинарных деревьев, каждый из которых отличается порядком посещения узлов. Обход в ширину также распространён, но относится к другой категории обходов.

Порядки различаются моментом посещения корня.

Какие из следующих свойств верны для min-heap?

В min-heap корень всегда является наименьшим элементом, а высота дерева O(log n), что делает вставку и извлечение эффективными.

Для минимальной кучи каждый родитель не больше потомков.

Устойчива ли стандартная пузырьковая сортировка, которая меняет соседние элементы местами только когда левый строго больше правого?

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

Равные ключи не меняются местами.