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

Дихотомический поиск по близости

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

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

индексы записей

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]

Результат поиска: в таблице нет записей с ключами из заданного интервала.

Задание к лабораторной работе

Разработать приложение, содержащее процедуры, реализующие основные операции над таблицами: формирование таблицы, сортировка или поиск (согласно указанному варианту), вывод таблицы.

В качестве языка программирования следует использовать ТурбоПаскаль, как наиболее подходящее средство для задач обработки данных.

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

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