Поиск заданного элемента в упорядоченном массиве (бинарный поиск) - Free Pascal
Формулировка задачи:
Заполнить одномерный массив из n элементов согласно таблицы. Размерность массива задать в виде именованной константы. Вывести массив на экран. Ввести с клавиатуры число. Используя метод половинного деления определить индекс первого элемента с таким значением и количеством таких элементов. Если элемент с таким значением в массиве отсутствует вывести соответствующее сообщение. Так же прикладываю пример решения
Индексы элементов | 1 | 2 | 3 | 4 | 5 | 6 | 7 | ... |
Значения элементов | 0 | 0 | 2 | 2 | 4 | 4 | 6 | 6 |
Решение задачи: «Поиск заданного элемента в упорядоченном массиве (бинарный поиск)»
textual
Листинг программы
l:=1; r:=n; k:=Число что ищем while l<>r do If a[(l+r) div 2]>k then r:=(l+r) div 2-1 else l:=(l+r) div 2 If a[l]=k then writeln(k,' присутсвует') else writeln(k,' отсутсвует')
Объяснение кода листинга программы
- Переменная
l
инициализируется значением 1. - Переменная
r
инициализируется значениемn
. - Переменная
k
инициализируется значением искомого элемента. - Запускается цикл while, который выполняется до тех пор, пока
l
не станет равнымr
. - Внутри цикла сравнивается средний элемент массива
a
с искомым элементомk
. - Если
a[(l+r) div 2]
большеk
, то значение переменнойr
уменьшается на единицу. - Если
a[(l+r) div 2]
меньше или равноk
, то значение переменнойl
уменьшается на единицу. - После выхода из цикла while проверяется, равен ли элемент массива
a
с индексомl
искомому элементуk
. - Если равен, то выводится сообщение, что искомый элемент присутствует.
- Если не равен, то выводится сообщение, что искомый элемент отсутствует.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д