Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка3.2.doc
Скачиваний:
54
Добавлен:
19.08.2019
Размер:
3.14 Mб
Скачать

Контрольные вопросы

  1. Записать ADT – формат и объявление класса TTreeNode.

  2. Записать реализацию метода AddChild класса TTreeNode и объяснить его работу.

  3. Записать реализацию метода InsertChild класса TTreeNode и объяснить его работу.

  4. Записать реализацию метода DeleteChild класса TTreeNode и объяснить его работу.

  5. Записать ADT – формат и объявление класса TTree.

  6. Записать реализацию метода Add класса TTree и объяснить его работу.

  7. Записать реализацию метода Insert класса TTree и объяснить его работу.

  8. Записать реализацию метода Delete класса TTree и объяснить его работу.

  9. Записать реализацию метода AddChild класса TTree и объяснить его работу.

  10. Записать реализацию метода InsertChild класса TTree и объяснить его работу.

  11. Записать реализацию метода DeleteChild класса TTree и объяснить его работу.

  12. Представить строку ‘Программирование’ в виде бинарного дерева и записать результат его прохода всеми четырьмя способами.

  13. Записать и протестировать в программе оператор равно для класса TTree.

  14. Записать и протестировать в программе оператор не равно для класса TTree.

  15. Записать и протестировать в программе метод нахождения количества узлов дерева.

  16. Записать и протестировать в программе метод нахождения глубины дерева.

  17. Записать и протестировать в программе метод нахождения плотности дерева.

  18. Записать и протестировать в программе не рекурсивный метод прямого прохождения дерева.

  19. Записать и протестировать в программе не рекурсивный метод обратного прохождения дерева.

  20. Записать и протестировать в программе не рекурсивный метод симметричного прохождения дерева.

  21. Записать и протестировать в программе метод поиска узла с заданными данных, объяснив преимущества использования для этого деревьев.

  22. Определить глубину и плотность следующих деревьев:

Лабораторная работа № 5 алгоритмы сортировки данных

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

Теоретические сведения

Сортировка (Sorting) – это упорядочение элементов списка по какому-либо критерию.

В качестве критерия сортировки могут выступать как числа, так и другие показатели. Например, символы, слова, биты и т.д. Критерии сортировки часто называют ключами (key).

Все алгоритмы сортировки оцениваются по вычислительной сложности и по затратам оперативной памяти компьютера.

Вычислительная сложность – это время, необходимое для выполнения алгоритма сортировки. Она оценивается в зависимости от количества исходных данных и их начального состояния с учетом затрат времени как на перестановку элементов, так и на их сравнение друг с другом.

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

Алгоритмы сортировки, которые не требуют дополнительных затрат памяти, называются сортировкой на месте.

В зависимости от сферы применения алгоритмы сортировки бывают:

  1. Внутренняя сортировка – оперирует с массивами, целиком помещающимися в оперативной памяти с произвольным доступом к любому элементу. Данные обычно упорядочиваются на том же месте, без дополнительных затрат памяти.

  2. Внешняя сортировка – оперирует с данными, которые расположены на периферийных устройствах с последовательным доступом. Например, сортировка в файлах, дисках, флеш-накопителях. Невозможность произвольного доступа к любому элементу из-за большого объема данных, которые нельзя поместить в оперативной памяти компьютера, накладывает некоторые дополнительные ограничения на алгоритмы и приводит к специальным методам упорядочения, обычно использующим дополнительное дисковое пространство. Кроме того, доступ к данным на носителе производится намного медленнее, чем операции с оперативной памятью.

Кроме этих показателей используют и другие характеристики алгоритмов сортировок:

Устойчивость (Stability) – отсутствие перестановок равных элементов.

Естественность – повышение эффективности алгоритма при обработке уже упорядоченных, или частично упорядоченных данных.

Сравнимость – наличие только операций сравнений элементов друг с другом, без дополнительной информации о них. Существуют более эффективные алгоритмы для определенных типов данных, которые используют не только сравнения элементов. Например, блочная или карманная сортировка (Bucket sort) .

На практике чаще всего используют алгоритмы внутренней сортировки на месте.