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

Лабораторная работа 1 методы сортировки постоянных таблиц и поиска в таблицах

Цель работы: ознакомление с различными методами сортировки таблиц и методами поиска в упорядоченных таблицах.

Методические указания к выполнению работы

Классификация таблиц

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

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

Если таблица формируется один раз (сразу заносятся все записи), а поиск записей в ней должен происходить многократно, то эту таблицу следует организовать как постоянную. Для эффективного выполнения операции поиска постоянную таблицу нужно сначала отсортировать, а затем использовать для нее дихотомический поиск.

На логическом уровне таблица представляется, например, так:

Name

Capital

Area

Population

Россия

Москва

225110

2400000

Украина

Киев

15630

400000

. . .

. . .

. . .

. . .

Отображается постоянная таблица на вектор (физический уровень), причем записи следуют одна за другой без промежутков:

Если операции занесения и поиска записей должны выполняться поочередно, то таблицу нужно организовать как переменную (хеш‑таблицу, таблицу с вычисляемым входом).

Определение операции сортировки

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

Существует достаточно много методов внутренней сортировки (случаи, когда упорядочиваемая таблица полностью размещается в оперативной памяти). Критериями оценки методов сортировки являются следующие показатели: количество операций сравнения ключей, число перестановок записей, необходимый дополнительный объем памяти.

Среднее количество операций сравнения и перестановок зависит от метода сортировки и связано с n – размером таблицы (размер таблицы – это количество содержащихся в ней записей).

Методы сортировки таблиц

Для достаточно малых таблиц можно использовать простые методы сортировки: линейный выбор, "пузырек", шейкер-сортировка, вставка с прямым включением. При больших n эффективны более сложные алгоритмы: метод Шелла, сортировка слиянием, "быстрая" сортировка, вставка с бинарным включением. Однако, не существует метода, являющегося оптимальным в любом случае, так как эффективность методов существенно зависит от типа ключей и их предварительной упорядоченности.

С точки зрения экономичности использования памяти методы внутренней сортировки можно разделить на две группы:

  • методы, выполняющие упорядочение записей "на том же месте", то есть на участке памяти, где располагается сортируемая таблица;

  • методы, требующие для проведения сортировки дополнительного объема памяти (двухпутевая вставка, методы слияния).

В зависимости от характерных особенностей процесса сортировки методы можно разбить на три категории:

- с помощью выбора (линейный выбор, выбор с подсчетом, сортировка слиянием),

- с помощью включения (прямое включение, бинарное включение, двухпутевая вставка, метод Шелла),

- с помощью обменов (”пузырек”, шейкер-сортировка, ”быстрая”).

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

R[j] – j‑я запись таблицы;

K[j] – значение ключевого поля (ключа) j‑й записи.

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]