- •( Для студентов, обучающихся по направлению подготовки 6.050101 ”Компьютерные науки”)
- •( Для студентов, обучающихся по направлению подготовки 6.050101 ”Компьютерные науки”)
- •Введение
- •Классификация структур данных
- •Структура оперативной памяти
- •Лабораторная работа 1 методы сортировки постоянных таблиц и поиска в таблицах
- •Методические указания к выполнению работы
- •Определение операции сортировки
- •Линейный выбор (сортировка выбором)
- •Линейный выбор с подсчетом
- •Метод "пузырька"
- •{Описание типов}
- •Шейкер – сортировка
- •Метод вставки с прямым включением
- •Метод вставки с бинарным включением
- •Метод двухпутевой вставки
- •Метод Шелла
- •"Быстрая" сортировка (обменная сортировка с разделением)
- •Метод простого двухпутевого слияния (сортировка слиянием)
- •Метод естественного слияния (сортировка слиянием)
- •Дихотомический поиск по совпадению
- •Дихотомический поиск нескольких записей
- •Дихотомический поиск по близости
- •Дихотомический поиск по интервалу
- •Задание к лабораторной работе
- •Варианты заданий
- •Требования к выполнению лабораторной работы
- •Контрольные вопросы
- •Литература
- •Приложение а Примеры программ, выполняющих сортировку таблицы методом линейного выбора
- •Программа на языке с
- •Приложение в краткое описание системы turbo pascal
- •1. Структура pascal-программы
- •2. Простые типы
- •3. Составные типы
- •4. Операторы
- •5. Процедуры и функции
- •6. Файлы
- •7. Управление консолью
- •Содержание
- •Методические указания и задания
- •К лабораторным работам по курсу
- •«Алгоритмы и структуры данных»
- •(Для студентов обучающихся по направлению подготовки 6.050101 ”Компьютерные науки”)
Дихотомический поиск по близости
Задачей поиска по близости является определение одной или двух записей, ключи которых наиболее близки к значению ключа поиска (в частности, возможно точное совпадение ключей записи и поиска). Алгоритм такого поиска основывается на алгоритме поиска по совпадению.
В качестве примера рассмотрим следующую последовательность ключей (ключи записей упорядоченной таблицы):
индексы записей |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
ключи |
5 |
8 |
12 |
15 |
18 |
20 |
21 |
25 |
28 |
30 |
Определить записи, наиболее близкие к задаваемому ключу KL:
1) KL=22
Результатом поиска: запись с ключом 21 (индекс равен 7).
2) KL=27
Результат поиска: запись с ключом 28 (индекс равен 9).
3) KL=19
Результат поиска: записи с ключами 18 и 20 (индексы равны 5, 6).
4) KL=12
Результат поиска: запись с индексом 3 (точное совпадение).
Используя поиск по близости, можно также найти записи, ключи которых больше (меньше) заданного. Например:
1) Определить записи, ключи которых >=22.
Результат поиска: записи с индексами от 8 до 10.
2) Определить записи, ключи которых <=15.
Результат поиска: записи с индексами от 1 до 4.
Дихотомический поиск по интервалу
Задачей поиска по интервалу является определение записей таблицы, ключи которых входят в задаваемый интервал значений.
Поиск заключается в определении положения границ интервала. Сначала нужно найти элемент, больший или равный значению нижней границы интервала, затем – элемент, меньший или равный значению верхней границы. Индексы найденных элементов и определяют границы для элементов, попадающих в заданный интервал значений ключей. Алгоритм такого поиска основывается на алгоритме поиска по совпадению.
В качестве примера рассмотрим следующую последовательность ключей (ключи записей упорядоченной таблицы):
индексы записей |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
ключи |
5 |
8 |
12 |
15 |
18 |
20 |
21 |
25 |
28 |
30 |
Определить записи, ключи которых попадают в задаваемый интервал:
1) интервал [10, 20]
Результат поиска: записи с индексами 3..6.
2) интервал [16, 40]
Результат поиска: записи с индексами 5..10.
3) интервал [4, 35]
Результат поиска: записи с индексами 1..10 (все записи таблицы попадают в заданный интервал).
4) интервал [16, 17]
Результат поиска: в таблице нет записей с ключами из заданного интервала.
5) интервал [35, 40]
Результат поиска: в таблице нет записей с ключами из заданного интервала.
Задание к лабораторной работе
Разработать приложение, содержащее процедуры, реализующие основные операции над таблицами: формирование таблицы, сортировка или поиск (согласно указанному варианту), вывод таблицы.
В качестве языка программирования следует использовать ТурбоПаскаль, как наиболее подходящее средство для задач обработки данных.
В приложении А приведен пример программы, выполняющей сортировку таблицы методом линейного выбора.