Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
AlgStr / LAB1_New.doc
Скачиваний:
36
Добавлен:
23.03.2015
Размер:
1.32 Mб
Скачать

Лабораторная работа №1

ТЕМА: Базовые алгоритмы (алгоритмы поиска и сортировки структур данных (СД)).

ЦЕЛЬ: Освоить методы разработки алгоритмов на примере изучения базовых алгоритмов поиска и сортировки. Научиться тестировать и сравнивать алгоритмы решения одной и той же задачи по различным критериям.

РАЗДЕЛ А. Организация таблиц.

Т Е М А : ПОИСК ИНФОРМАЦИИ В СТРУКТУРАХ ДАННЫХ.

Ц Е Л Ь : НАУЧИТЬСЯ СОЗДАВАТЬ ТАБЛИЦЫ НА ОСНОВЕ НЕКОТОРОГО АЛГОРИТМА ПОИСКА.

Индивидуальные задания

ПОСТАНОВКА ЗАДАЧИ.

Реализовать несколько таблиц на ваш выбор (не менее пяти).

Т Е Р М И Н О Л О Г И Я :

-----------------------

Пусть у нас имеется N элементов R1, R2, ..., RN. Назовем их записями, а всю совокупность N записей назовем файлом. Каждая запись Rj имеет ключ Kj, который служит для идентификации записи. Если доступ к элементу файла осуществляется по ключу, то такой файл принято называть таблицей (в отличие от массива, где доступ осуществляется по индексу, который не хранится в элементе массива (вычисляемый доступ)). Помимо ключа запись может содержать дополнительную сопутствующую информацию, которая не влияет на сортировку, но всегда остается в этой записи.

На множестве ключей вводится отношение порядка "<" таким образом, чтобы для любых трех значений ключа A, B, C выполнялись следующие условия:

1) справедливо одно и только одно из соотношений

A < B, A = B, B < A (закон трихотомии);

2) если A < B и B < C, то A < C (закон транзитивности).

Эти свойства определяют математическое понятие линейного упорядочения, называемого еще совершенным упорядочением.

Таблица называется сортированной (упорядоченной), если

K1 <= K2 <= ... <= KN.

В противном случае таблица считается несортированной (неупорядоченной).

П О С Т А Н О В К А З А Д А Ч И :

----------------------------------

Пусть имеется таблица, состоящая из записей R1, R2, ..., RN с ключами K1, K2, ..., KN и задано некоторое значение ключа K0. Необходимо найти одну (или все) запись, удовлетворяющую критерию поиска со значением K0.

КЛАССИФИКАЦИЯ ТЕРМИНОВ, ОТНОСЯЩИХСЯ К ЗАДАЧЕ ПОИСКА :

Обозначение

Название термина

Краткая характеристика

А.

Критерий поиска:

1)по совпадению ключей;

2) интервальный поиск;

3) поиск ближайшего;

4) поиск по условию

1) Найти такое(ие) i при котором Ki = K0.

2) Найти все такие i, что |Ki - K0| <= a.

3)Найти такие i, что |Ki - K0|  min.

4)Найти такие i, что предикат P(K0, Ki) = истина, где K0 и Ki – вектора.

Б.

Результат поиска:

1)удачный;

2)неудачный;

1) Найдена запись, ключ которой удовлетворяет критерию поиска.

2) В таблице отсутствует запись, удовлетворяющая критерию поиска.

В.

Использование результата поиска:

1) Найти, чтобы обработать.

2) Найти и вставить, если искомая запись в таблице отсутствовала

1)Если искомой записи в таблице нет, то считать, что поиск завершился неудачно.

2) Если искомой записи в таблице нет, то она добавляется (вставляется) в таблицу.

Г.

Динамика изменения таблицы:

1) Статическая таблица

2) Динамическая таблица

1) Содержимое таблицы неизменно.

2) Таблица является объектом частых (или нечастых вставок)и/или удалений.

Д.

Способ организации таблицы:

1) последовательные линейные таблицы:

а) сортированные;

б) несортированные.

2) таблицы, организованные как деревья сравнения.

3) таблицы с вычисляемыми адресами (метод расстановки или хеширования):

а) один ключ - один адрес;

б) таблицы, допускающие коллизии ключей.

1) Доступ к элементам происходит последовательно, начиная от одного конца таблицы до другого:

а) элементы таблицы упорядочены в порядке возрастания (убывания) ключей;

б) элементы таблицы расположены в произвольном порядке;

2) Элементы таблицы разбиваются на подмножества элементов по правилу: <ключи левого поддерева) < <ключа корня> < <ключей корня>;

3) Адрес элемента вычисляется как функция от значения ключа:

а) функция для каждого значения ключа выдает один адрес;

б) несколько ключей могут порождать один адрес.

E.

Способ работы с ключами:

1) Поиск основан на сравнении ключей;

2) Поиск основан на использовании цифровых свойств ключей (на распределении записей).

Ж.

Способ использования ключей:

1) Использование истинных ключей;

2) Использование преобразованных ключей.

1) В критерии используется сам ключ;

2) В критерии используется некоторая функция над значением ключа.

З.

Количество ключей:

1) Поиск по первичным ключам.

2) Поиск по вторичным ключам.

1) Для поиска используется один ключ (возможно составной);

2) Для поиска используются и другие атрибуты записи, отличные от ключевых.

И.

Виды памяти, используемые для хранения таблицы:

1) Внутренняя таблица;

2) Внешняя таблица.

1) При поиске таблица может быть целиком размещена в оперативной памяти;

2) Вся таблица не помещается в оперативной памяти.

ИНДИВИДУАЛЬНЫЕ ЗАДАНИЯ ПО ТЕМЕ "ОРГАНИЗАЦИЯ ТАБЛИЦ"

(Алгоритмы поиска информации в структурах данных)

Номер алгоритма

Ссылка на литературу

Название алгоритма

Обозначение алго-ритма в книге

1 1.1 1.2 1.3 1.4 1.5

стр. 470 стр. 471 стр. 472 стр. 473 стр. 475

Поиск в неупорядоченной таблице:

А)Последовательный поиск (простой;

Б)Быстрый последовательный поиск; В)Сверхбыстрый последовательный поиск; Г)Последовательный поиск в упорядоченной таблице; Д)Самоорганизующийся файл.

S

Q

Q'

T

-

2 2.1 2.2 2.3 2.4 2.5 2.5

стр. 484 стр. 489 стр. 490 стр. 492 стр. 494 стр. 495

Поиск в упорядоченной таблице:

А) Бинарный поиск;

Б) Однородный бинарный поиск;

В) Однородный бинарный поиск;

Г) Метод Шера;

Д) Фибоначчиев поиск;

Е) Интерполяционный поиск.

B

U

С

-

F

-

3 3.1 3.2 3.3 3.4

стр. 504 стр. 509 стр. 519 стр. 523

Поиск по бинарному дереву:

А) Поиск с вставкой по дереву;

Б) Удаление по дереву;

В) Нахождение оптимальных бинарных деревьев поиска; Г) Алгоритм Ху-Такера.

T

D

K

-

4 4.1 4.2 4.3

4.4

4.5

4.6

4.7

стр. 540 стр. 551

стр. 553

стр. 554

стр. 554

стр. 557 стр. 557

Сбалансированные деревья:

А) Поиск с вставкой по сбалансированному дереву; Б) Поиск и вставка по позиции в сбалансированное дерево;

В) Удаление из дерева, не нарушающее его сбалансированности;

Г) Конкатенация двух деревьев, не нарушающее сбалансированность;

Д) Расщепление списка на две части, конкатенация которых дает исходный список;

Е) Поиск с вставкой в (3-2)-дерево;

Ж) Удаление, конкатенация и расщепление для (3-2)-деревьев.

A

B и C

-

-

-

-

-

5 5.1

стр. 563

Сильно ветвящиеся деревья. Работа с B-деревьями.

-

6 6.1 6.2 6.3 6.4

стр. 572 стр. 577 стр. 582 стр. 585

Цифровой поиск:

А) Поиск по Бору;

Б) Модификация метода поиска по Бору (Сассенгат); В) Цифровой поиск по дереву;

Г) ПАТРИЦИЯ - Практический алгоритм для выборки информации, закодированной буквами и цифрами.

T

-

D

P

7 7.1 7.2 7.3 7.4 7.5

стр. 611 стр. 616 стр. 619 стр. 623 стр. 625

Хеширование:

А) Поиск с вставкой по рассеянной таблице с цепочками;

Б) Поиск с вставкой по открытой рассеянной таблице; В) Открытая адресация с двойным хешированием;

Г) Улучшение Брента алгоритма D;

Д) Удаление при линейном опробовании.

C

L

D

-

R

8 8.1

стр. 635

Внешний поиск. Алгоритм внешнего поиска.

-

9 9.1 9.2 9.3 9.4 9.5 9.6

стр. 652 стр. 653 стр. 659 стр. 660 стр. 664 стр. 667

Выборка по вторичным ключам:

А) Метод "буферизации";

Б) Инвертированные файлы;

В) Составные атрибуты;

Г) Бинарные атрибуты;

Д) Кодирование наложением;

Е) Комбинаторное хеширование;

-

-

-

-

-

-

Раздел Б. СОРТИРОВКА информации в структурах данных.

Т Е М А : СОРТИРОВКА ИНФОРМАЦИИ В СТРУКТУРАХ ДАННЫХ.

Ц Е Л Ь : РЕАЛИЗОВАТЬ НЕСКОЛЬКО АЛГОРИТМОВ СОРТИРОВКИ.

Индивидуальные задания

ПОСТАНОВКА ЗАДАЧИ.

Реализовать несколько алгоритмов сортировки информации (не менее пяти).

Т Е Р М И Н О Л О Г И Я :

-----------------------

Пусть у нас имеется N элементов R1, R2, ..., RN. Назовем их записями, а всю совокупность N записей назовем файлом. Каждая запись Rj имеет ключ Kj, который служит для идентификации записи. Если доступ к элементу файла осуществляется по ключу, то такой файл принято называть таблицей (в отличие от массива, где доступ осуществляется по индексу, который не хранится в элементе массива (вычисляемый доступ)). Помимо ключа запись может содержать дополнительную сопутствующую "информацию", которая не влияет на сортировку, но всегда остается в этой записи.

На множестве ключей вводится отношение порядка "<" таким образом, чтобы для любых трех значений ключа A, B, C выполнялись следующие условия:

1) Справедливо одно и только одно из соотношений

A < B, A = B, B < A (закон трихотомии);

2) если A < B и B < C, то A < C (закон транзитивности).

Эти свойства определяют математическое понятие линейного упорядочения, называемого еще совершенным упорядочением.

Таблица называется сортированной (упорядоченной), если

K1 <= K2 <= ... <= KN.

В противном случае таблица считается несортированной (неупорядоченной).

Алгоритм сортировки - это процедура, которая реорганизует файл записей таким образом, чтобы ключи записей оказались в возрастающем (убывающем) порядке. Благодаря такому упорядоченному расположению группируются записи с близкими ключами, становится возможной эффективная обработка группы файлов, отсортированных по одному ключу, создается основа для эффективных алгоритмов выборки и более убедительно выглядят документы, подготовленные с помощью ЭВМ.

Существует множество алгоритмов сортировки. Было бы прекрасно, если бы только один или два метода сортировки превосходили все остальные безотносительно к приложению или используемой машине. На самом же деле каждый метод имеет свои собственные, одному ему присущие достоинства. Например, метод пузырька (алгоритм 5.2.2B) не имеет ярко выраженных преимуществ, так как всегда можно найти лучший способ сделать то, что он делает; но даже этот метод после соответствующего обобщения оказывается полезным для сортировки с двумя лентами (см. п. 5.4.8). Итак приходим к выводу, что почти все алгоритмы заслуживают того, чтобы о них помнили, так как существуют приложения, в которых они оказываются весьма хорошими.

КЛАССИФИКАЦИЯ МЕТОДОВ СОРТИРОВКИ

Обозначение

Название

Краткая характеристика

А.

Размер таблицы:

1) Внутренняя сортировка;

2) Внешняя сортировка.

1)Сортируемый файл размещается целиком в оперативной памяти.

2)Размер сортируемого файла превышает объем оперативной памяти.

Б.

Основные классы алгоритмов:

1) Сортировка вставками;

2) Обменная сортировка;

3) Сортировка посредством выбора;

4) Сортировка слиянием;

5) Распределяющая сортировка.

1)Элементы просматриваются по одному, и каждый новый элемент вставляется в подходящее место среди ранее упорядоченных элементов.

2)Если два элемента расположены не по порядку, то они меняются местами. Процесс повторяется до тех пор, пока элементы не будут упорядочены.

3)Сначала выделяется наименьший (или, может быть, наибольший) элемент и каким-либо образом отделяется от остальных, затем выбирается наименьший (наибольший) из оставшихся и т.д.

4)Объединение двух или более ранее отсортированных файлов в один упорядоченный файл.

5)Сортировка использует цифровые свойства ключей.

В.

Оптимальная сортировка:

А) сортировка с минимальным числом сравнений;

Б) слияние с минимальным числом сравнений;

В) выбор с минимальным числом сравнений;

Г) оптимальные сети сортировок.

Оптимальная сортировка - это сортировка лучшая в некотором смысле:

А) требует минимальное число сравнений среди методов, удовлетворяющих определенным ограничениям;

Б) требует минимальное число сравнений для слияния двух упорядоченных файлов в один;

В) выбор t-ого элемента в порядке убывания из n элементов за минимальное число сравнений;

Г) у сетей сортировок существует ограничение: последовательность сравнений не должна зависеть от предыстории сравнений.

Г.

Гибридные методы сортировки.

Методы, использующие идеи нескольких различных методов.

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

  1. Распределяющий подсчет.

Алгоритм 5.2D очень полезен, если диапазон ключей невелик. Метод устойчив (не изменяется порядок записей с равными ключами), но требуется память для счетчиков и 2*N записей. Одна из модификаций, экономящая N из этих записей ценой устойчивости, встречается в упр. 5.2-13.

  1. Простые вставки.

Алгоритм 5.2.1 S наиболее прост для программирования, не требует дополнительного пространства и вполне эффективен при малых N(скажем, при N <= 25). При больших N он становится невыносимо медленным, если только исходные данные не окажутся сразу почти упорядоченными.

  1. Сортировка с убывающим шагом.

Алгоритм 5.2.1 D (метод Шелла) также довольно просто программируется, использует минимальный объем памяти и довольно эффективен при умеренно больших N (скажем, при N < 1000).

  1. Вставка в список.

Алгоритм 5.2.1 L основан на той же идее, что и простые вставки, и поэтому годится только при небольших N. Как и в других методах сортировки списков в, благодаря операциям со ссылками экономится стоимость перемещения длинных записей; это особенно удобно, когда записи имеют переменную длину или являются частью других структур данных.

  1. Сортировка с вычислением адреса.

Она эффективна, если ключи подчиняются известному (обычно равномерному) закону распределения; важнейшими вариантами этого подхода являются вставки в несколько списков (алгоритм 5.2.1 M) и комбинированная поразрядная сортировка со вставками Макларена (рассмотренная в конце п.5.2.5). Для последнего этого достаточно иметь O(N) дополнительных ячеек памяти.

  1. Обменная сортировка со слиянием.

Алгоритм 5.2.2 M (Метод Бэтчера) и родственный ему алгоритм битонной сортировки (упр. 5.3.4-10) полезны, если можно одновременно выполнить большое число сравнений.

  1. Обменная сортировка с разделением (метод Хоара или быстрая сортировка).

Алгоритм 5.2.2 Q, вероятно, самый полезный универсальный алгоритм внутренней сортировки, поскольку он требует очень мало памяти и опережает своих конкурентов по среднему времени выполнения на большинстве вычислительных машин. Однако в наихудшем случае он может работать очень медленно. Поэтому, если вероятность неслучайных данных очень велика, приходится тщательно выбирать разделяющий элемент. Если выбирается медиана из трех элементов, (как предлагается в упр. 5.2.2-55), то такое поведение, как в наихудшем случае, становится крайне маловероятным и, кроме того, несколько уменьшается среднее время работы.

  1. Простой выбор.

Алгоритм 5.2.3 S довольно прост и особенно подходит в случае, когда имеется специальное оборудование для быстрого поиска наименьшего элемента в списке.

  1. Пирамидальная сортировка.

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

  1. Слияние списков.

Алгоритм 5.2.4 L осуществляет сортировку списков, при которой, так же как и при пирамидальной сортировке, обеспечивается весьма высокая скорость даже в наихудшем случае, кроме того, этот метод устойчив по отношению к равным ключам.

  1. Поразрядная сортировка.

Алгоритм 5.2.5 R это не что иное, как сортировка списков, которая приемлема для ключей, либо очень коротких, либо имеющих необычайный порядок лексикографического сравнения. Вместо ссылок можно применить распределяющий подсчет; такая процедура потребует пространства для 2N записей и для таблицы счетчиков, но благодаря простоте внутреннего цикла она особенно хороша для сверхбыстрых ЭВМ - "пожирательниц чисел", имеющих опережающее управление. (Предостережение: поразрядную сортировку не следует использовать при малых N !!!).

  1. Сортировка вставками и слиянием.

Этот алгоритм (см п. 5.3.1) наиболее приемлем при очень малых N в "прямолинейных" программах. Например, этот метод оказался бы подходящим в тех приложениях, где требуется сортировать много групп из пяти или шести записей.

  1. Гибридные методы.

Могут оказаться полезными и гибридные методы, объединяющие один или более из приведенных выше методов. Например, короткие подфайлы, возникающие при быстрой сортировке, можно сортировать слиянием и вставками.

  1. Безымянный метод.

И наконец, для реализации безымянного метода, встретившегося в ответе к упр. 5.2.1-3 требуется, по-видимому, кратчайшая из возможных программ сортировки. Но среднее время работы такой программы пропорционально N*N*N, т.е. это самая медленная программа сортировки в книге!

ИНДИВИДУАЛЬНЫЕ ЗАДАНИЯ ПО ТЕМЕ "СОРТИРОВКА информации в структурах данных"

Номер алгоритма

Ссылка на литературу

Название алгоритма

Обозначение алго ритма в книге

1

1.1

1.2

1.3

стр. 102 стр. 103 стр. 104

Сортировка вставками:

А) Сортировка простыми вставками;

Б) Бинарные вставки;

В) Двухпутевые вставки.

S

-

-

1.4

стр. 105

Г) Сортировка с убывающим шагом (метод Шелла);

D

1.5

стр. 120

В) Вставки в список;

L

1.6*

стр. 122

Г) Комбинированный метод Уиллера;

-

1.7

стр. 122

Д)Сортировка вставкой в бинарное дерево (Бернес - Ли.

-

1.8*

стр. 123

Е) Метод группировки операций при вставке.

-

1.9*

стр. 123

Ж) Сортировка с вычислением адреса (вставка в несколько списков).

M

2 2.1 2.2

2.3

2.4

2.5

2.5

стр. 132

стр. 135 стр. 138 стр. 140 стр. 143 стр. 151

Обменная сортировка:

А) Метод "пузырька" ("обменная сортировка выбором"; или метод "распространения" );

Б) "Шейкер – сортировка";

В) Параллельная сортировка Бэтчера;

Г) Быстрая сортировка (сортировка Хоара);

Д) Обменная сортировка с разделением;

Е) Обменная поразрядная сортировка.

B

-

M

-

Q

R

3

3.1

3.2

3.3

3.4

3.5

3.6

3.7

стр. 169 стр. 172 стр. 173 стр. 175

стр. 177 стр. 182

стр. 183

Сортировка посредством выбора:

А) Сортировка посредством простого выбора;

Б) Сортировка посредством квадратичного выбора; В) Сортировка посредством выбора из дерева;

Г) Сортировка посредством выбора из дерева с "заглядыванием вперед" (Айверсон);

Д) Пирамидальная сортировка;

Е) Использование пирамид для работы с большими приоритетными очередями;

Ж) Представление приоритетных очередей в виде связанных бинарных деревьев (Кларк Э. Крэйн).

S

-

-

-

H

-

-

4

4.1

4.2

4.3

4.4

4.5

стр. 193 стр. 195 стр. 198 стр. 199

стр. 200

Сортировка слиянием:

А) Сортировка двухпутевым слиянием;

Б) Сортировка естественным двухпутевым слиянием; В) Сортировка простым двухпутевым слиянием;

Г) Комбинирование алгоритма сортировки простым; двухпутевым слиянием с простыми вставками;

Д) Сортировка посредством слияния списков.

R

N

S

-

L

5

5.1

5.2

5.3

стр. 209 стр. 214 стр. 214

Распределяющая сортировка:

А) Поразрядная сортировка списка;

Б) СЦ - поразрядная сортировка;

В) Комбинация МЦ - метода с методом простых вставок.

R и H

-

-

6

6.1 6.1.1 6.2 6.2.1 6.3 6.3.1 6.4 6.4.1 6.4.2 6.4.3 6.4.3.1 6.4.4

стр. 223 стр. 246 стр. 251 стр. 260 стр. 279

Оптимальная сортировка:

А) Сортировка с минимальным числом сравнений:

А1) Сортировка вставками и слиянием;

Б) Слияние с минимальным числом сравнений:

Б1) Бинарное слияние;

В) Выбор с минимальным числом сравнений:

В1) Алгоритм выбора Райвеста и Тарьяна;

Г) Сети сортировки:

Г1) Сети с минимальным числом сравнений;

Г2) Сети с минимальным временем;

Г3) Сети слияния;

Г4)Битонная сортировка;

Г5)Сети выбора.

-

H

-

-

-

7

7.1 7.1.1 7.1.2 7.2 7.2.1

7.2.2

7.2.3 7.3

7.3.1 7.4

7.4.1 7.4.2 7.5 7.5.1 7.5.2 7.5.3 7.5.4 7.5.5

стр. 306 стр. 308 стр. 310 стр. 322 стр. 333

стр. 335

стр. 347 стр. 373

стр. 383 стр. 95

стр. 95 стр. 97 стр. 97 стр. 100

Внешняя сортировка:

А) Выбор с замещением;

Б) Преобразование отрезков с задержкой;

В) Натуральный выбор;

Г) Многофазное слияние:

Г1)Сортировка многофазным слиянием с использованием "горизонтального" распределения;

Г2)(Метод Кэйрона);

Г3) Расщепление лент;

Д) Каскадное слияние:

Д1) Сортировка каскадным слиянием со специальным распределением;

Е) Осциллирующая сортировка:

Е1)Осциллирующая сортировка с перекрестным распределением;

Е2)Прогнозирование с плавающими буферами;

Ж) Внешняя поразрядная сортировка:

Ж1)Сортировка таблицы цветов;

Ж2)Сортировка ключей;

Ж3)Сортировка списка;

Ж4)Сортировка подсчетом;

Ж5)Сравнение и подсчет;

Ж6)Распределяющий подсчет.

R

-

-

D

-

-

C

B

F

-

-

-

C

D

Примечание. Ссылки даны на книгу “Кнут Д. Искусство программирования для ЭВМ.Т. 3. Сортировка и поиск. М.: Мир, 1978”

Классификация идей, применяемых в методах внутренней1) сортировки

  1. Сортировка вставками

Каждый новый элемент вставляется в подходящее место среди ранее упорядоченных (просмотренных) элементов.

  1. Обменная сортировка

Если два элемента расположены не по порядку, то они меняются местами. Эта операция повторяется для всех элементов.

  1. Сортировка посредством выбора

Выделяется наименьший (наибольший) элемент и отделяется каким-то образом от остальных. Затем это повторяется среди оставшихся ключей и т.д.

  1. Сортировка слиянием

Идея заключается в том, что задача слияния двух (или более) отсортированных таблиц более простая, чем задача сортировки.

Если n=n1 + n2, то (n1)^2 +(n2)^2 << n^2 (Ведь сложность основных простых методов сортировки имеет порядок n^2).

  1. Распределяющая сортировка

Этот класс сортировок прямо противоположен сортировкам слиянием.

Идея состоит в том, чтобы сравнить попарно все ключи и подсчитать сколько из них меньше каждого отдельного ключа. Результат – таблица COUNT, хранящая эти счетчики. Значение COUNTj указывает то место, куда нужно переслать запись Rj. Это похоже на сортировку таблицы адресов.

Дополнительные идеи

А) Сортировка таблицы адресов

Чтобы не перемещать громоздкие записи, часто лучше составить новую таблицу адресов (ссылок), которые указывают на эти записи и работать с адресами, не перемещая громоздкие записи.

Б) Сортировка ключей

Если ключи короткие, а соответствующая информация в записях велика, то для повышения скорости ключи можно вывести в таблицу адресов.

В) Сортировка списка

В каждую запись включается вспомогательное поле связи. Связь обрабатывается таким образом, что в результате все записи оказываются связанными в линейный список, в котором каждая связь указывает на следующую по порядку запись.

После операций Б) и В) часто нужно разместить все записи в неубывающем порядке. Это можно сделать за один проход. Но здесь необходимо учитывать следующие обстоятельства:

а) если можно записи разместить на новом месте, то необходимо в два раза больше памяти;

а) если записи необходимо разместить на старом месте, то необходимо в два раза больше времени;

Примечание.

1) Сортировка называется внутренней, если весь файл помещается в оперативной памяти.

Описание основных алгоритмов внутренней сортировки

Соседние файлы в папке AlgStr