
- •IV Алгоритмы, структуры данных и программирование
- •1. Понятие информационной системы. Основные задачи курса, простейшая задача поиска. Эффективность решения задач поиска для простейшего случая.
- •2. Двоичный поиск, оценка эффективности и её обоснование. Программа bin_search и её особенности.
- •3.Бинарное дерево поиска, особенности его построения. Примеры.
- •4. Структура данных дерево(не обязательно бинарное). Кодировка в виде списковой структуры. Бинарное дерево поиска, длина ветви, баланс вершины.
- •5. Операции над бинарными деревьями поиска: вставка, удаление вершины и др. Операции.
- •7. Быстрая сортировка и её особенности. Эффективность.
- •8. Операции над бинарными деревьями поиска. Симметричный, прямойи обратный
- •9. Хеширование. Эффективность хеширования.Схема закрытого хеширования.
- •Закрытое хэширование или Метод открытой адресации – это технология разрешения коллизий, которая предполагает хранение записей в самой хэш-таблице.
- •11. Графы. Реализация представления структуры графа. Списочное и матричное представление графов. (http://school29.Smoladmin.Ru/arbuzov/vvedenie.Html)
- •12. Динамические структуры данных. Связные списки. Односвязные списки. Кольцевой односвязный список
- •13. Деревья. Представление деревьев. Бинарные деревья. Сведение m-арного дерева к бинарному. (http://pro-prof.Com/archives/682)
- •Зачем нужны деревья?
- •Заключение:
- •15. Алгоритм создания дерева бинарного поиска. Прохождение бинарных деревьев.
- •Infix_traverse ( f ) — обойти всё дерево, следуя порядку (левое поддерево, вершина, правое поддерево). Элементы по возрастанию
- •16. Алгоритм Дейкстры.
- •17. Динамические структуры данных. Стек. Процедуры создания, удаления.
- •18. Динамические структуры данных. Очередь. Процедуры создания, удаления.
- •Применение очередей
- •Формирование очереди
- •Алгоритм удаления первого элемента из очереди
- •19. Динамические структуры данных. Дек. Процедуры создания, удаления.
- •Типовые операции
- •20. Дважды связные списки (понятия, операции, использование).
- •21. Алгоритмы обхода бинарных деревьев
- •22. Основное дерево минимальной стоимости. Алгоритм Прима, Крускала. Поиск в ширину, в глубину.
- •Вход: Связный неориентированный граф g(V,e) Выход: Множество t рёбер минимального остовного дерева
- •23. Трудоемкость алгоритмов: наилучший случай, наихудший случай, трудоемкость в
- •24. Принцип «Разделяй и властвуй». Примеры решения задач с использованием данных методов и их трудоемкость.
- •25. Основные структуры данных. Множества. Массивы. Записи.
- •26. Алгоритмы поиска. Линейный поиск.
- •27. Поиск делением пополам (двоичный поиск).
- •28. Прямой поиск строки.
- •Алгоритм прямого поиска
- •29. Алгоритм Кнута, Мориса и Пратта.
- •Постановка задачи
- •Префикс-функция. Определение
- •30. Алгоритм Боуера и Мура
- •10.1. Основные понятия сортировки
- •10.2. Оценка алгоритмов сортировки
- •10.3. Классификация алгоритмов сортировок
- •32. Внутренняя сортировка и ее виды.
- •Алгоритм и особенности этой сортировки таковы:
- •36. Сортировка вставками
- •Псевдокод
- •Псевдокод
- •Пример[править | править исходный текст]
- •38. Динамические структуры данных. Указатели. Динамическое выделение памяти.
- •Типы указателей, описание указателей
- •Пример использования типизированного указателя.
- •39. Понятие рекурсии. Рекурсивные
- •40. Динамический тип данных – список. Определение. Основные понятия.
- •Однонаправленные (односвязные) списки
- •41. Основные операторы для работы со списками. Способы реализации списков.
- •42. Методы ускорения доступа к данным. Хеширование и его варианты.
Алгоритм и особенности этой сортировки таковы:
При первом проходе по массиву элементы попарно сравниваются между собой: первый со вторым, затем второй с третьим, следом третий с четвертым и т.д. Если предшествующий элемент оказывается больше последующего, то их меняют местами.
Не трудно догадаться, что постепенно самое большое число оказывается последним. Остальная часть массива остается не отсортированной, хотя некоторое перемещение элементов с меньшим значением в начало массива наблюдается.
При втором проходе незачем сравнивать последний элемент с предпоследним. Последний элемент уже стоит на своем месте. Значит, число сравнений будет на одно меньше.
На третьем проходе уже не надо сравнивать предпоследний и третий элемент с конца. Поэтому число сравнений будет на два меньше, чем при первом проходе.
В конце концов, при проходе по массиву, когда остаются только два элемента, которые надо сравнить, выполняется только одно сравнение.
После этого первый элемент не с чем сравнивать, и, следовательно, последний проход по массиву не нужен. Другими словами, количество проходов по массиву равно m-1, где m – это количество элементов массива.
Количество сравнений в каждом проходе равно m-i, где i – это номер прохода по массиву (первый, второй, третий и т.д.).
При обмене элементов массива обычно используется "буферная" (третья) переменная, куда временно помещается значение одного из элементов.
35. Сортировка выбором. Принципы.
Сортировка выбором (Selection sort) — алгоритм сортировки. Может быть как устойчивый, так и неустойчивый.
На массиве из n элементов имеет время выполнения в худшем, среднем и лучшем случае Θ(n2), предполагая что сравнения делаются за постоянное время.
Шаги алгоритма:
находим номер минимального значения в текущем списке
производим обмен этого значения со значением первой неотсортированной позиции (обмен не нужен, если минимальный элемент уже находится на данной позиции)
теперь сортируем хвост списка, исключив из рассмотрения уже отсортированные элементы
Для реализации устойчивости алгоритма необходимо в пункте 2 минимальный элемент непосредственно вставлять в первую неотсортированную позицию, не меняя порядок остальных элементов.
Наихудший случай:
Число сравнений в теле цикла равно (N-1)*N/2.
Число сравнений в заголовках циклов (N-1)*N/2.
Число сравнений перед операцией обмена N-1.
Суммарное число сравнений N2−1.
Число обменов N-1.
Наилучший случай:
Время сортировки 10000 коротких целых чисел на одном и том же программно-аппаратном комплексе сортировкой выбором составило ≈40сек., а ещё более улучшенной сортировкой пузырьком ≈30сек.
Пирамидальная сортировка сильно улучшает базовый алгоритм, используя структуру данных «куча» для ускорения нахождения и удаления минимального элемента.
Существует также двунаправленный вариант сортировки методом выбора, в котором на каждом проходе отыскиваются и устанавливаются на свои места и минимальное, и максимальное значения