§ 20. Использование библиотечных функций для сортировки и поиска данных
20.3. Бинарный поиск
Если массив отсортирован, то для поиска элемента x можно применять алгоритм бинарного поиска. Алгоритм дихотомии реализован в нескольких функциях:
В качестве параметров задаются итераторы, указывающие диапазон поиска и искомое значение. Функции могут иметь четвертый параметр — компаратор, указывающий на порядок сортировки элементов в массиве. Пример 20.5. Дан линейный отсортированный массив целых чисел. Написать программу, которая получит количество элементов, меньших x и больших y. Массив упорядочен в порядке убывания. Данные прочитать из файла. Числа x и y ввести с клавиатуры. Этапы выполнения задания I. Исходные данные: переменные n –количество чисел в массиве, a — массив, числа x и y. II. Результат: количество элементов, меньших x и больших y. III. Алгоритм решения задачи. 1. Ввод исходных данных. 2.1. Для поиска n1 — номера первого значения, меньшего x, воспользуемся функцией upper_bound. |
Функция equal_range возвращает диапазон, содержащий все элементы, равные x. Диапазон определяется двумя итераторами, первый указывает на первый элемент, не меньший (равный или больше), чем x, второй указывает на первый элемент, больший, чем x. Первый итератор может быть получен использованием lower_bound(), второй — upper_bound(). Возвращаемым значением является тип пара (pair), содержащий два итератора. Для использования типа данных pair необходима библиотека utility. V. Программа:
VI. Тестирование. Анализ результатов. Значение 7 – номер первого меньшего 88, а значение 8 — номер первого большего 82. |