- •Структуры данных. Классификация
- •Алгоритмы. Определение. Как алгоритмы соотносятся со структурами данных.
- •Оценка сложности алгоритма. Способы. Меры оценки сложности.
- •Оценка сложности алгоритма. Худший, лучший случай и в среднем.
- •Массивы и сортировка массивов. Сортировка Шелла.Алг. Сложность
- •Массивы и сортировка массивов. Быстрая сортировка. Алг. Сложность
- •Списки. Виды списков. Организация списков при помощи массивов.
- •Стек. Организация стека при помощи массива, динамической структуры.
- •Очередь. Организация очереди при помощи массива. Динамической структуры.Двух стеков.
- •Деревья. Определения. Высота, степень дерева, степень узла. Бинарные деревья.
- •Бинарные деревья. Организация бинарных деревьев при помощи массива.
- •Бинарные деревья поиска. Организация деревьев при помощи динамических структур.
- •Бинарные деревья поиска. Операции. Удаление элементов из дерева. Случай 1. Узел — лист (нет потомков)
- •🔹 Случай 2. У узла один потомок (только левое или только правое поддерево)
- •🔹 Случай 3. У узла два потомка
- •Бинарные деревья. Стратегии обхода деревьев. В ширину.
- •Бинарные деревья. Стратегии обхода деревьев. В глубину.
- •Графы. Способы задания графов. Матрица инцидентности. Матрица смежности.
- •🔸 1. Матрица смежности
- •🔸 2. Матрица инцидентности
- •Графы. Обходы графов. Поиск в ширину и глубину.
- •Кратчайшие пути на графах. Алгоритм дейстры
- •Хранение данных в формате json
Структуры данных. Классификация
Структура данных - прог.единица позволяющая хранить и обрабатывать множество однотипных и/или логически связанных данных в вычислительной технике.
Классификация: 1) Линейные: массив, список, связанный список, стек, очередь, хэш таблица
Иерархические: N-арные деревья
3) Сетевые: графы(ориентированные и неориентированные)
4) Табличные: двумерные массивы
Алгоритмы. Определение. Как алгоритмы соотносятся со структурами данных.
Алгоритм - четкая последовательность шагов, для решения конкретной задачи или выполнения определенного действия Основные свойства: дискретность, определенность, конечность, результативность, массовость.
Соотношение со структурами данных:
Структуры данных — где и как хранятся данные.
Алгоритмы — что с этими данными делается.
Оценка сложности алгоритма. Способы. Меры оценки сложности.
Оценка сложности — это анализ зависимости времени (или памяти) работы алгоритма от размера входных данных n. Способы оценки:
1)Анализ по случаям: — лучший, — худший, — средний (при случайных данных).
2)Асимптотический анализ — оценка порядка роста функции времени T(n) при n→∞.
3)Использование асимптотических обозначений: — Θ(g(n)) — точная оценка, — O(g(n)) — верхняя граница (худший случай), — Ω(g(n)) — нижняя граница (лучший случай).
Меры оценки:
Временная сложность — основная мера (сколько операций выполняется).
Пространственная сложность — объём дополнительной памяти.
Оценка сложности алгоритма. Худший, лучший случай и в среднем.
Лучший случай — когда всё складывается идеально;
Средний случай — ожидаемое поведение на типичных данных;
Худший случай — гарантированный максимум затраченных ресурсов.
Пример: сортировка вставками
Лучший случай — данные «удачные» (например, массив уже отсортирован). → Для сортировки вставками: O(n).
Худший случай — данные «наихудшие» (например, массив в обратном порядке). → Каждый элемент сравнивается со всеми предыдущими O(n^2). → Даёт верхнюю границу времени работы — используется чаще всего.
Средний случай — входные данные случайны. → В среднем каждый элемент сравнивается с половиной предыдущих → O(n^2).
Оценка сложности — это анализ зависимости времени (или памяти) работы алгоритма от размера входных данных n.
Массивы и сортировки массивов. Сортировка пузырьком.Алг. сложность
Массив — это упорядоченная структура данных, хранящая элементы одного типа.
Алгоритмическая сложность:
В лучшем:O(n) В среднем:O(n^2) необходимо сделать столько сравнений и перестановок. В худшем:O(n^2) необходимо сделать столько сравнений и перестановок. Как работает: Просто меняем местами соседние элементы до тех пор пока не отсортируется.
Массивы и сортировка массивов. Сортировка выбором.Алг. сложность
Сортировка выбором — это простой алгоритм, который на каждом шаге находит минимальный элемент в неотсортированной части массива и меняет его местами с первым элементом этой части.
Алг.сложность: O(n^2)
Массивы и сортировка массивов. Сортировка вставками.Алг. сложность
Сортировка вставками работает по принципу, похожему на сортировку игральных карт в руках:
Массив делится на отсортированную часть (в начале — только первый элемент) и неотсортированную. — На каждом шаге берётся очередной элемент из неотсортированной части и вставляется в правильное место в отсортированной части. Алгоритмическая сложность: Лучшее:O(n) Среднее:O(n^2) Худшее:O(n^2)
Массивы и сортировка массивов. Сортировка расчёской.Алг. сложность
Сортировка расчёской (гребёнкой) — это улучшенная версия сортировки пузырьком, в которой вместо сравнения соседних элементов сравниваются элементы, находящиеся на некотором расстоянии (шаге) друг от друга. Этот шаг постепенно уменьшается от размера массива до 1 (обычно делится на фактор ≈ 1.247 на каждом проходе).
Алгоритмическая сложность:
В лучшем случае: O(n log n) (при удачном выборе шагов и почти отсортированном массиве),
В среднем случае: O(n² / 2ᵖ), где p — количество проходов, но на практике часто считается O(n²),
В худшем случае: O(n²) — требуется выполнить много сравнений и перестановок.
