Поиск заданного элемента в упорядоченном массиве (бинарный поиск) - 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,' отсутсвует')

Объяснение кода листинга программы

  1. Переменная l инициализируется значением 1.
  2. Переменная r инициализируется значением n.
  3. Переменная k инициализируется значением искомого элемента.
  4. Запускается цикл while, который выполняется до тех пор, пока l не станет равным r.
  5. Внутри цикла сравнивается средний элемент массива a с искомым элементом k.
  6. Если a[(l+r) div 2] больше k, то значение переменной r уменьшается на единицу.
  7. Если a[(l+r) div 2] меньше или равно k, то значение переменной l уменьшается на единицу.
  8. После выхода из цикла while проверяется, равен ли элемент массива a с индексом l искомому элементу k.
  9. Если равен, то выводится сообщение, что искомый элемент присутствует.
  10. Если не равен, то выводится сообщение, что искомый элемент отсутствует.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 3.8 из 5
Похожие ответы