- •1. Основные понятия сортировки и поиска.
- •1.1. Сортировка.
- •1.2. Поиск.
- •2.1. Лабораторная работа № 1. Сортировка методом попарной перестановки (“метод пузырька”).
- •Методические указания.
- •Порядок выполнения работы.
- •Массив чисел (ключей)
- •Содержание отчета.
- •Контрольные вопросы.
- •2.2. Лабораторная работа № 2. Сортировка информационных массивов методом подсчета.
- •Методические указания
- •Порядок выполнения работы.
- •Содержание отчета.
- •Контрольные вопросы.
- •2.3. Лабораторная работа № 3. Сортировка информационных массивов методом вставки.
- •Методические указания
- •Порядок выполнения работы.
- •Содержание отчета.
- •Контрольные вопросы.
- •2.4. Лабораторная работа № 4. Сортировка информационных массивов методом Шелла.
- •Методические указания.
- •Порядок выполнения работы.
- •Содержание отчета.
- •Контрольные вопросы.
- •2.5. Лабораторная работа № 5. Последовательный поиск в информационном массиве.
- •Методические указания.
- •Порядок выполнения работы.
- •Содержание отчета.
- •Контрольные вопросы.
- •2.6. Лабораторная работа № 6. Бинарный поиск в информационном массиве.
- •Методические указания.
- •Порядок выполнения работы.
- •Содержание отчета.
- •Контрольные вопросы.
- •3. Литература.
- •Приложение 5 Бинарный поиск
Что такое ключ записи и аргумент поиска?
Каково возможное минимальное и максимальное число сравнений при последовательном поиске?
Что такое “самоорганизующийся файл”?
Чем различаются первичные и вторичные ключи?
2.6. Лабораторная работа № 6. Бинарный поиск в информационном массиве.
Цель работы: изучение метода бинарного поиска и его алгоритма.
Методические указания.
Бинарный поиск предполагает существование между элементами ИМ отношения упорядочения: К1<K2<,…,<Kn. Поэтому перед началом поиска необходимо провести сортировку массива. Алгоритм бинарного поиска состоит в следующем. Аргумент поиска сравнивается со средним элементом Км из массива ключей {K1, K2, …, Kм}, причем индекс М среднего элемента вычисляется по формуле.
где L – нижняя граница; K – верхняя граница; | Х | – ближайшее целое, меньшее или равное Х.
Для исходного массива L=1, K=N. Результат сравнения позволит определить, в какой половине файла продолжать поиск.
Если Км=z, то искомый элемент найден.
Если Км<z, то L=M+1.
Если Км>z, то K=M-1.
К выбранной половине файла с границами L и К применяется та же процедура. Если интервал пустой, т.е. L>К, то поиск неудачен. Иначе процесс повторяется: пока средний элемент интервала не будет равен аргументу поиска.
В данной работе в качестве ИМ используется упорядоченная последовательность целых чисел, разрядность которых с учетом знакового разряда не должна превышать 5, а количество элементов массива не должно превышать 50. Ключом элемента является само число. Значение границ, номер среднего элемента и сообщение о результатах поиска выводится на печать.
Приведем пример бинарного поиска в массиве из 6 чисел.
Дано: К={-50; -37; 2; 7; 559; 10001}, z=7.
L=1 К=6 М=3 К(3)=2 2<7
L=4 К=6 М=5 К(5)=5 559>7
L=4 К=4 М=4 К(4)=7 7=7
Номер искомого элемента равен 4. Поиск окончен. Так как на исходное множество ключей накладывается требование строгого упорядочения, то возможность появления в нем одинаковых ключей исключается.
Организацию бинарного поиска для анализа числа сравнений удобно представить в виде бинарного оптимального дерева. Бинарным деревом называется древовидная структура с двоичным ветвлением. В качестве оптимального (в смысле организации поиска) дерева определяют дерево, ветви которого имеют в высоту от h до h-1, где h – высота дерева. Тогда при 2h-1 N < 2h удачный поиск требует (min = 1, max = h) сравнений. Неудачный поиск требует h сравнений при N = 2h - 1, либо h-1 или h сравнений при 2h-1 N 2h-1-1.
Блок-схема, реализующая бинарный поиск, представлена в Приложении 5.
Порядок выполнения работы.
Ознакомится с общими методическими указаниями и с описаниями данной работы. Ознакомиться по литературе с основными понятиями обработки ИМ, алгоритмами поиска и требованиями к ним.
Изучить блок-схему, реализующую бинарный поиск в ИМ (Приложение 6).
Каждому студенту взять из таблицы (лабораторная работа № 5) массив из n ключей {K1,K2, … ,Kn} и набор значений аргумента поиска Z.
Из данного массива ключей {K1,K2, … ,Kn} получить массив {К1’, К2’,…, Кj’} путем исключения дублирующих значений ключей.
Записать элементы массива {К1’, К2’,…, Кj’} в порядке возрастания их значений. Провести поиск в полученном массиве вручную, используя лишь одно (любое) из данных значений аргумента поиска (см. пример).
Провести сортировку массива {К1’, К2’,…, Кj’} любым из ранее изученных методов.
Провести поиск в отсортированном массиве на ЭВМ, задавая по очереди все данные значения аргумента поиска.
Построить бинарное дерево поиска в отсортированном массиве для всех значений аргумента поиска. Оценить число сравнений при поиске.