Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Data Structures and Algorithms in C++ 2e (На ру...docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
2.37 Mб
Скачать

Глава 10. Деревья поиска

C-10.24 Опишите последовательность доступов к дереву откоса n-узла T, где n странный,

это приводит к T, состоящему из единственной цепи внутренних узлов с внешними детьми узла, такими, что путь внутреннего узла вниз T чередуется между покинутыми детьми и правильными детьми.

C-10.25 Объясните, как осуществить вектор n элементов так, чтобы функции

вставка и во взятии O (регистрируют n), время в худшем случае.

Проекты

P-10.1 Напишите программу, которая выполняет простое моделирование n-тела, названное «Скачок -

Гномы луга». Это моделирование вовлекает n гномов, перечисленных 1 к n. Это поддерживает золотую стоимость gi для каждого гнома i, который начинается с каждого гнома, начинающего с ценностью за миллион долларов золота, то есть, gi = 1 000 000 для каждого я = 1, 2..., n. Кроме того, моделирование также поддерживает, для каждого гнома, меня, места на горизонте, который является repre-sented как двойная точность floating число пункта, xi. В каждом повторении моделирования моделирование обрабатывает гномов в заказе. Про - cessing гном i во время этого повторения начинается, вычисляя новое место на горизонте, поскольку я, который определен назначением

xi¬ xi + rgi,

где r - случайное число floating-пункта между-1 и 1. lep-

rechaun i тогда кражи половина золота от самых близких гномов на также

сторона его и добавляет это золото к его золотой стоимости, gi. Напишите программу, которая может выполнить ряд повторений в этом моделировании для данного числа, n, гномов. Вы должны поддержать набор положений горизонта, используя заказанную структуру данных карты, описанную в этой главе.

P-10.2 Расширьте класс BinarySearchTree (Раздел 10.1.3), чтобы поддержать функции

из заказанной карты ADT (см. Раздел 9.3).

P-10.3 Осуществите класс RestructurableNodeBinaryTree, который поддерживает func-

tions двоичного дерева ADT, плюс функция реструктурируют для выполнения операции по вращению. Этот класс - компонент внедрения дерева AVL, данного в Разделе 10.2.2.

P-10.4 Напишите C ++ класс, который осуществляет все функции заказанной карты

ADT (см. Раздел 9.3), использование дерева AVL.

P-10.5 Напишите C ++ класс, который осуществляет все функции заказанной карты

ADT (см. Раздел 9.3), использование (2, 4) дерево.

P-10.6 Напишите C ++ класс, который осуществляет все функции заказанной карты

ADT (см. Раздел 9.3), использование красно-черного дерева.

Примечания к главе 497

P-10.7 Сформируйте команду с тремя программистами и имейте каждое членское орудие карта

использование различной структуры данных дерева поиска. Выполните кооператив experi-умственное исследование, чтобы сравнить скорость этих трех внедрений.

P-10.8 Напишите C ++ класс, который может взять любое красно-черное дерево и преобразовать его в

соответствующий (2, 4) дерево и может взять любого (2, 4) дерево и преобразовать его в его соответствующее красно-черное дерево.

P-10.9 Осуществите карту ADT использование косого дерева и сравните его работу

экспериментально с классом карты STL, который использует красно-черное дерево.

P-10.10 Подготовьте внедрение косых деревьев, которое использует вверх дном вывих

как описано в этой главе и другом, который использует сверху вниз вывих, как описано в Упражнении C-10.23. Выполните обширные экспериментальные исследования, чтобы видеть, какое внедрение лучше на практике, если таковые имеются.

P-10.11 Осуществите структуру данных дерева двоичного поиска так, чтобы она могла поддержать

ADT словаря, где у различных записей могут быть равные ключи. В addi-tion, осуществите функции entrySetPreorder (), entrySetInorder (), и entrySetPostorder (), которые производят повторяемую коллекцию записей в дереве двоичного поиска в том же самом заказе, их соответственно посетили бы в предварительном заказе, inorder, и пересечении постзаказа дерева.

Примечания к главе

Некоторые структуры данных, обсужденные в этой главе, экстенсивно покрыты Knuth в его Сортировке и Поиске книги [60], и Mehlhorn в [73]. Деревья AVL происходят из-за Адел'сон-Вел'ския и Лэндиса [1], кто изобрел этот класс уравновешенных деревьев поиска в 1962. Деревья двоичного поиска, деревья AVL и хеширование описаны в Сортировке и Поиске Нута [60] книга. Исследования средней высоты для деревьев двоичного поиска могут быть найдены в книгах Aho, Хопкрофтом и Ульманом [5] и Cormen, Лейсерсон, Ривест и Стайн [25]. Руководство Gonnet и Баэсой-Yates [37] содержит много теоретических и экспериментальных com-баночек среди внедрений карты. Aho, Хопкрофт и Ульман [4] обсуждают (2, 3) деревья, которые подобны (2, 4) деревья. [9]. Изменения и интересные свойства красно-черных деревьев представлены в статье Guibas и Sedgewick [42]. Читатель, заинтересованный узнаванием больше о различных структурах данных сбалансированного дерева, отнесен в книги Mehlhorn [73] и Тарьяном [95], и книжная глава Mehlhorn и Tsakalidis [75]. Knuth [60] экс-cellent дополнительное чтение, которое включает ранние подходы к балансирующим деревьям. Косые деревья были изобретены Sleator и Тарьяном [89] (см. также [95]).

Эта страница преднамеренно оставила незаполненный

Глава

11

Сортировка, наборы и выбор

Содержание

11.1 Вид слияния.......................

11.1.1 Делить-и-побеждать................ 11.1.2 Слияние Множеств и Списков............. 11.1.3 Продолжительность Вида слияния........ 11.1.4 C ++ Внедрения Вида слияния....... 11.1.5 Вид слияния и Уравнения Повторения.....

11.2 Быстрый вид.......................

11.2.1 Рандомизированный Быстрый Вид.............. 11.2.2 C ++ внедрения и оптимизация.....

11.3 Изучение сортировки алгоритмической линзы...

11.3.1 Более низкое направляющееся в сортировку............ 11.3.2 Линейно-разовая сортировка: вид ведра и вид корня 11.3.3 сравнения алгоритмов сортировки..........

11.4 Наборы и Структуры Союза/Находить...........

11.4.1 Набор ADT................... 11.4.2 Наборы Mergable и образец метода шаблона 11.4.3 разделения с операциями находки союз......

11.5 Выбор........................

11.5.1 Слива-и-поиск................. 11.5.2 Рандомизированный быстро-избранный............. 11.5.3 Анализ, рандомизированный быстро-избранный.......

11.6 Упражнения........................

... .. .. .. .. ... .. ... .. .. ... .. .. ... .. .. .

500 500 505 508 509 511 513 521 523 526 526 528 531 533 533 534 538 542 542 543 544 545