ответы составлялись в последнюю ночь перед зачетом человеком, который более-менее понимал тему, поэтому много где нет развернутого и адекватного ответа. Использовать, как макет для составления ответов на зачет.
1.Структуры данных. Классификация программная единица, позволяющая хранить и обрабатывать множество однотипных и/или логически связанных данных в
вычислительной технике. Для добавления, поиска, изменения и удаления данных структура данных предоставляет некоторый набор алгоритмов реализованных при помощи функций(, составляющих её интерфейс.
линейные, иерархические, сетевые, табличные и другие
2.Алгоритмы. Определение. Как алгоритмы соотносятся со структурами данных.
набор инструкций, описывающих порядок действий исполнителя для достижения результата решения задачи за конечное число действий.
3.Оценка сложности алгоритма. Способы. Меры оценки сложности.
Обольшое. Как возрастает количество операций в зависимости от
количества обрабатываемых элементов. константная, логарифмическая,
линейная, квадратичная, экспоненциальная и факториальная. Каждая
следующая — «хуже» предыдущей.
4.Оценка сложности алгоритма. Худший, лучший случай и в среднем.
Обольшое. Как возрастает количество операций в зависимости от количества обрабатываемых элементов. константная, логарифмическая,
линейная, квадратичная, экспоненциальная и факториальная. Каждая
следующая — «хуже» предыдущей.
5.Массивы и сортировки массивов. Сортировка пузырьком.Алг. сложность
Алгоритм состоит из повторяющихся проходов по сортируемому
массиву. За каждый проход элементы последовательно
сравниваются попарно и, если порядок в паре неверный, выполняется обмен элементов.
Проходы по массиву повторяются N-1 раз или до тех пор, пока на
очередном проходе не окажется, что обмены больше не нужны, что
означает — массив отсортирован.
При каждом проходе алгоритма по внутреннему циклу, очередной
наибольший элемент массива ставится на своё место в конце
массива рядом с предыдущим «наибольшим элементом», а
наименьший элемент перемещается на одну позицию к началу массива («всплывает» до нужной позиции как пузырёк в воде,
отсюда и название алгоритма).
6.Массивы и сортировка массивов. Сортировка выбором.Алг. сложность
Выбрать элемент с наименьшим ключом
2.Поставить его на первое место т.е. поменять местам с первым элементом массива
3.Повторить операцию с остальными 2...n элементами
n^2
7.Массивы и сортировка массивов. Сортировка вставками.Алг. сложность Данная сортировка используется игроками в карты.
Элементы массива разделяются на последовательностьприемник (а0...аi-1
) и последовательность источник (аi...аn ) .
Суть алгоритма: На каждом шаге, начиная с i=1. В последовательности источнике берется один элемент и ставиться в правильную позицию в последовательности приемнике. Количество элементов в последовательности
приемнике увеличивается, а в последовательности
источнике уменьшается. n^2
8.Массивы и сортировка массивов. Сортировка расчёской.Алг. сложность
Шаг между сравниваемыми элементами лучше брать с учётом
специальной величины, называемой фактором уменьшения,
оптимальное значение которой равно примерно 1,247
9.Массивы и сортировка массивов. Сортировка Шелла.Алг. сложность Является усовершенствованным вариантом сортировки
вставками. Идея метода Шелла состоит в сравнении элементов,
стоящих не только рядом, но и на определённом расстоянии
друг от друга. Т.е. это сортировка вставками с
предварительными «грубыми» проходами.
10.Массивы и сортировка массивов. Быстрая сортировка. Алг. сложность
1.Выбираем опорный элемент
2.Разбиваем массив на 3 части
1.Создаём переменные l и r — индексы соответственно начала и
конца рассматриваемого подмассива
2.Увеличиваем l, пока l-й элемент меньше опорного
3.Уменьшаем r, пока r-й элемент больше опорного
4.Если l всё ещё меньше r, то меняем l-й и r-й элементы местами,
инкрементируем l и декрементируем r
5.Если l вдруг становится больше r, то прерываем цикл
3.Повторяем рекурсивно (то есть сортируем левую и правую часть
массива относительно опорного), пока не дойдём до массива из 1/0
элементов.
11.Списки. Виды списков. Организация списков при помощи массивов. Список – это совокупность элементов, число которых может меняться.
Структура списка похожа на модель звеньев цепи.
•Односвязные
•Циклические
•Двусвязные
12.Списки. Виды списков. Организация списков при помощи динамических структур.
Список – это совокупность элементов, число которых может меняться.
Структура списка похожа на модель звеньев цепи.
•Односвязные
•Циклические
•Двусвязные
•Инициализация списка
•Добавление узла в список
•Удаление узла из списка
•Вывод элементов списка
•Сращивание списков
13.Стек. Организация стека при помощи массива, динамической структуры.
14.Очередь. Организация очереди при помощи массива. Динамической
структуры.Двух стеков.
Очередь можно реализовать на двух стеках leftStack и rightStack.
leftStack будеn использовать для операции push, rightStack для операции pop.
При этом, если при попытке извлечения элемента из rightStack он оказался пустым, все элементы из leftStack
переносятся в правый стек (при этом элементы в rightStack
получатся уже в обратном порядке, что и нужно для
извлечения элементов, а leftStack станет пустым).
pushLeft и pushRight — функции, реализующие операцию push для соответствующего стека,
popLeft и popRight — аналогично операции pop.
15.Деревья. Определения. Высота, степень дерева, степень узла. Бинарные
деревья.
Дерево — это граф без петель и циклов. Деревья используются для организации
данных в виде иерархической структуры.
Глубина дерева — самый длинный путь от корня дерева до его листа.
Высота дерева будет высота его корневого узла, или , что эквивалентна, глубина самого
глубокого узла.
• Глубина дерева — самый длинный путь от корня дерева до его листа (выражается в числе ребер).
Степенью узла в дереве называется количество дуг, которое из него выходит.
16.Бинарные деревья. Организация бинарных деревьев при помощ массива.
по обходу в ширину
17.Бинарные деревья поиска. Организация деревьев при помощи динамических структур.
18.Бинарные деревья поиска. Операции. Удаление элементов из дерева.
19.Бинарные деревья. Стратегии обхода деревьев. В ширину.
прямой, центрированный, обратный, в ширину
20.Бинарные деревья. Стратегии обхода деревьев. В глубину. прямой, центрированный, обратный, в ширину
21.Графы. Способы задания графов. Матрица инцидентности. Матрица смежности.
граф состоит из множества элементов данных ,
называемыми вершинами, и множества ребер, которые попарно соединяют эти вершины.
Матрица инцидентности:
матрица ребер и вершин
для ориентированного входящие -1, а исходящие 1 Матрица смежности: матрица вершин и вершин. Если есть путь - 1, если нет - 0 Матрица инцидентности
Матрица смежности
Матрица весов
Список ребер Список смежности
22.Графы. Обходы графов. Поиск в ширину и глубину. Поиск в глубину
Поиск в ширину
23.Кратчайшие пути на графах. Алгоритм дейстры
24.Кратчайшие пути на графах. Алгоритм флойда. A->C->B
25.Кратчайшие пути на графах. Волновой алгоритм.
26.Задача коммивояжера.
Взадаче коммивояжера рассматривается n городов и матрица попарных расстояний между ними. Требуется найти такой порядок посещения городов, чтобы суммарное
пройденное расстояние было минимальным, каждый город посещался ровно один раз и коммивояжер вернулся в тот город, с которого начал свой маршрут.
1. Полный перебор
2. Случайный перебор
3. Жадные алгоритмы (метод ближайшего соседа, метод включения ближайшего города, метод самого дешёвого включения)
Ближайший сосед, ветвей и границ
27.Форматы данных XML
XML разрабатывался как язык с простым формальным синтаксисом,
удобный для создания и обработки документов как программами, так и
человеком, с акцентом на использование в Интернете. Язык называется расширяемым, поскольку он не фиксирует разметку, используемую в документах: разработчик волен создать разметку в соответствии с потребностями к конкретной области, будучи ограниченным лишь синтаксическими правилами языка.
28.Хранение данных в формате JSON
Водной из моих программ понадобилась запись данных в
формате JSON. Вкратце — XML-подобный формат, вполне подходит на замену Windows INI-файлам или тому же XML. Удобен
тем, что поддерживает массивы и вложенность собственных структур, но при этом не замусоривает файл данных своими
тегами до полной нечитабельности человеком.