- •( Для студентов, обучающихся по направлению подготовки 6.050101 ”Компьютерные науки”)
- •( Для студентов, обучающихся по направлению подготовки 6.050101 ”Компьютерные науки”)
- •Введение
- •Классификация структур данных
- •Структура оперативной памяти
- •Лабораторная работа 1 методы сортировки постоянных таблиц и поиска в таблицах
- •Методические указания к выполнению работы
- •Определение операции сортировки
- •Линейный выбор (сортировка выбором)
- •Линейный выбор с подсчетом
- •Метод "пузырька"
- •{Описание типов}
- •Шейкер – сортировка
- •Метод вставки с прямым включением
- •Метод вставки с бинарным включением
- •Метод двухпутевой вставки
- •Метод Шелла
- •"Быстрая" сортировка (обменная сортировка с разделением)
- •Метод простого двухпутевого слияния (сортировка слиянием)
- •Метод естественного слияния (сортировка слиянием)
- •Дихотомический поиск по совпадению
- •Дихотомический поиск нескольких записей
- •Дихотомический поиск по близости
- •Дихотомический поиск по интервалу
- •Задание к лабораторной работе
- •Варианты заданий
- •Требования к выполнению лабораторной работы
- •Контрольные вопросы
- •Литература
- •Приложение а Примеры программ, выполняющих сортировку таблицы методом линейного выбора
- •Программа на языке с
- •Приложение в краткое описание системы turbo pascal
- •1. Структура pascal-программы
- •2. Простые типы
- •3. Составные типы
- •4. Операторы
- •5. Процедуры и функции
- •6. Файлы
- •7. Управление консолью
- •Содержание
- •Методические указания и задания
- •К лабораторным работам по курсу
- •«Алгоритмы и структуры данных»
- •(Для студентов обучающихся по направлению подготовки 6.050101 ”Компьютерные науки”)
Лабораторная работа 1 методы сортировки постоянных таблиц и поиска в таблицах
Цель работы: ознакомление с различными методами сортировки таблиц и методами поиска в упорядоченных таблицах.
Методические указания к выполнению работы
Классификация таблиц
Таблицы являются наиболее употребительной структурой данных. Таблица – это множество записей одинаковой структуры. Поля записи содержат в общем случае алфавитно – цифровую информацию. Одно из полей определяет ключ записи. Ключ – это поле, значение которого однозначно идентифицирует запись в таблице. Ключ используется в процедурах упорядочения и поиска записей.
При классификации таблиц наиболее существенным является признак, который характеризует время создания таблицы. По этому признаку различают постоянные и переменные таблицы.
Если таблица формируется один раз (сразу заносятся все записи), а поиск записей в ней должен происходить многократно, то эту таблицу следует организовать как постоянную. Для эффективного выполнения операции поиска постоянную таблицу нужно сначала отсортировать, а затем использовать для нее дихотомический поиск.
На логическом уровне таблица представляется, например, так:
-
Name
Capital
Area
Population
Россия
Москва
225110
2400000
Украина
Киев
15630
400000
. . .
. . .
. . .
. . .
Отображается постоянная таблица на вектор (физический уровень), причем записи следуют одна за другой без промежутков:
Если операции занесения и поиска записей должны выполняться поочередно, то таблицу нужно организовать как переменную (хеш‑таблицу, таблицу с вычисляемым входом).
Определение операции сортировки
Основной операцией, выполняемой над постоянными таблицами, является сортировка. Сортировка – это расстановка записей по позициям таблицы в порядке, определяемом некоторым критерием упорядочения. Сортировка может выполняться по возрастанию или по убыванию значений ключевого поля (ключа). Для символьных ключей используется лексикографическая упорядоченность. Цель сортировки – упростить операцию поиска записи (записей) по заданному критерию.
Существует достаточно много методов внутренней сортировки (случаи, когда упорядочиваемая таблица полностью размещается в оперативной памяти). Критериями оценки методов сортировки являются следующие показатели: количество операций сравнения ключей, число перестановок записей, необходимый дополнительный объем памяти.
Среднее количество операций сравнения и перестановок зависит от метода сортировки и связано с n – размером таблицы (размер таблицы – это количество содержащихся в ней записей).
Методы сортировки таблиц
Для достаточно малых таблиц можно использовать простые методы сортировки: линейный выбор, "пузырек", шейкер-сортировка, вставка с прямым включением. При больших n эффективны более сложные алгоритмы: метод Шелла, сортировка слиянием, "быстрая" сортировка, вставка с бинарным включением. Однако, не существует метода, являющегося оптимальным в любом случае, так как эффективность методов существенно зависит от типа ключей и их предварительной упорядоченности.
С точки зрения экономичности использования памяти методы внутренней сортировки можно разделить на две группы:
-
методы, выполняющие упорядочение записей "на том же месте", то есть на участке памяти, где располагается сортируемая таблица;
-
методы, требующие для проведения сортировки дополнительного объема памяти (двухпутевая вставка, методы слияния).
В зависимости от характерных особенностей процесса сортировки методы можно разбить на три категории:
- с помощью выбора (линейный выбор, выбор с подсчетом, сортировка слиянием),
- с помощью включения (прямое включение, бинарное включение, двухпутевая вставка, метод Шелла),
- с помощью обменов (”пузырек”, шейкер-сортировка, ”быстрая”).
Замечание. В приводимых далее методах рассматривается упорядочение таблиц по возрастанию значений ключевого поля. При описании алгоритмов используются следующие обозначения:
R[j] – j‑я запись таблицы;
K[j] – значение ключевого поля (ключа) j‑й записи.
В иллюстрационных примерах для простоты рассматриваются только значения ключевого поля таблицы.