- •Ответы на экзаменационные вопросы по курсу «Алгоритмы и структуры данных»
- •1.Понятие типов и структур данных. Оперативные и внешние структуры.
- •2.Стандартные и пользовательские типы данных.
- •3.Определение и представление структур данных.
- •4.Классификация структур данных. Векторы и массивы как статистические структуры. Классификация структур данных
- •Статические структуры данных Векторы
- •Массивы
- •5.Записи и таблицы как статические структуры. Записи
- •6.Понятие списковой структуры. Стек как полустатическая структура. Операция над стеками
- •Алгоритмы основных операций со стеком
- •7.Очередь как полустатическая структура. Операции над очередью. Очередь
- •8.Недостатки полустатической очереди, методы их исправления. Очередь со сдвигом.
- •9.Кольцевая полустатическая очередь. Операции над кольцевой очередью. Деки, операции над ними.
- •10.Понятие динамических структур данных. Организация односвязных и двусвязных списков. Простейшие операции над односвязными списками. Динамические структуры данных
- •Связные списки
- •Односвязные списки
- •Кольцевой односвязный список
- •Двусвязный список
- •Кольцевой двусвязный список
- •Простейшие операции над односвязными списками
- •11.Реализация стеков с помощью списков.
- •Утилизация освободившихся элементов в многосвязных списках
- •13.Очередь и операции над ней при реализации связными списками
- •14.Операции вставки и извлечения элементов из списка. Сравнение этих операций с аналогичными в массивах. Недостаток связного списка по сравнению с массивом.
- •15.Пример алгоритма решения задачи извлечения элементов из списка по заданному признаку.
- •16.Пример алгоритма решения задачи вставки заданного элемента в упорядоченный список.
- •17.Элементы заголовков в списках; нелинейные связные структуры.
- •Нелинейные связанные структуры
- •18.Понятие рекурсивных структур данных. Деревья, их признаки и представления.
- •Деревья
- •Бинарные деревья
- •19.Алгоритм сведения m-арного дерева к бинарному; основные операции над деревьями; виды обхода.
- •Графическое пояснение алгоритма
- •Основные операции с деревьями
- •Рекурсивные алгоритмы обхода (прохождения) бинарных деревьев
- •20.Понятие поиска и ключей; назначение и структуры алгоритмов поиска.
- •21.Последовательный поиск и его эффективность.
- •22.Индексно-последовательный поиск.
- •23.Оптимизация поиска. Переупорядочивание таблицы с учетом вероятности поиска элемента. Дерево оптимального поиска.
- •24.Метод оптимизации поиска путем перестановки в начало списка.
- •25.Метод транспозиции при оптимизации поиска.
- •26.Бинарный поиск
- •27.Алгоритм создания упорядоченного бинарного дерева.
- •28.Поиск по бинарному дереву. Эффективность поиска по бинарному дереву.
- •29.Поиск по бинарному дереву с включением.
- •30.Поиск по бинарному дереву с удалением.
- •31.Алгоритмы прохождения бинарных деревьев. Рекурсивные алгоритмы обхода (прохождения) бинарных деревьев
- •32.Понятие сортировки, ее эффективность; классификация методов сортировки.
- •33.Сортировка методом прямого выбора.
- •34.Сортировка методом прямого включения. Сортировка методом прямого включения
- •Эффективность алгоритма прямого включения
- •35.Сортировка методом прямого обмена.
- •36.Быстрая сортировка.
- •37.Сортировка Шелла.
- •38.Сортировка с помощью бинарного дерева.
- •39.Сравнительный анализ эффективности методов сортировки.
- •40.Нерекурсивный алгоритм обхода бинарного дерева.
32.Понятие сортировки, ее эффективность; классификация методов сортировки.
Сортировка - это расположение данных в памяти в регулярном виде по выбранному параметру. Регулярность рассматривают как возрастание (убывание) значения параметра от начала к концу массива данных.
При обработке данных важно знать информационное поле данных и размещение их в машине.
Различают внутреннюю и внешнюю сортировку:
- внутренняя сортировка - сортировка в оперативной памяти;
- внешняя сортировка - сортировка во внешней памяти.
Если сортируемые записи занимают большой объем памяти, то их перемещение требует больших затрат. Для того, чтобы их уменьшить, сортировку производят в таблице адресов ключей, то есть делают перестановку указателей, а сам массив не перемещается. Это - метод сортировки таблицы адресов.
При сортировке могут встретиться одинаковые ключи. В этом случае желательно после сортировки расположить одинаковые ключи в том же порядке, что и в исходном файле. Это - устойчивая сортировка.
Мы будем рассматривать только сортировки, не использующие дополнительную оперативную память. Такие сортировки называются «на том же месте».
Эффективность сортировки можно рассматривать по нескольким критериям:
•время, затрачиваемое на сортировку;
•объем оперативной памяти, требуемой для сортировки;
•время, затраченное программистом на написание программы.
Выделяем первый критерий. Эквивалентом затраченного на сортировку времени можно считать количество сравнений и количество перемещений при выполнении сортировки.
•Порядок числа сравнений и перемещений при сортировке лежит в пределах
от О (n log n) до О (n2);
О (n) - идеальный и недостижимый случай.
Различают следующие методы сортировки:
•строгие (прямые) методы;
•улучшенные методы.
Строгие методы:
•метод прямого включения;
•метод прямого выбора;
•метод прямого обмена.
Эффективность строгих методов примерно одинакова.
33.Сортировка методом прямого выбора.
Сортировка методом прямого выбора
Этот метод основан на следующих принципах.
1. Выбирается элемент с наименьшим ключом.
2. Он меняется местами с первым элементом a1.
3. Затем этот процесс повторяется с оставшимися n-1 элементами, n-2 элементами и т.д. до тех пор, пока не останется один, самый "большой" элемент.
Алгоритм сортировки прямым выбором
for i = 1 to n - 1
x = a(i)
k = i
for j = i + 1 to n
if a(j) < x then
k = j
x = a(k)
endif
next j
a(k) = a(i)
a(i) = x
next i
return
Эффективность алгоритма сортировки прямым выбором
Число сравнений ключей C, очевидно, не зависит от начального порядка ключей. Можно сказать, что в этом смысле поведение этого метода менее естественно, чем поведение прямого включения. Для C при любом расположении ключей имеем:
C = n(n-1)/2
Порядок числа сравнений, таким образом, О(n2).
Число перестановок минимально Мmin = 3(n - 1) в случае изначально упорядоченных ключей и максимально, Мmax = 3(n - 1) + С, т.е. порядок О(n2), если первоначально ключи располагались в обратном порядке.
В худшем случае сортировка прямым выбором дает порядок n2, как для числа сравнений, так и для числа перемещений.
