Теория:

В программировании поиск одна из наиболее часто встречающихся задач невычислительного характера. Можно выделить следующие типовые задачи поиска:

  • найти наибольший (наименьший) элемент массива;
  • найти элемент массива, значение которого равно заданному значению.
  

Компьютер не может сравнить разом весь ряд объектов. На каждом шаге он может сравнивать только два объекта. Поэтому в программе необходимо организовать последовательный просмотр элементов массива и сравнение значения очередного просматриваемого элемента с неким образцом.


Рассмотрим подробно решение задач первого типа (нахождение наибольшего (наименьшего) элемента). Представим себе одномерный массив в виде стопки карточек, на каждой из которых написано число. Тогда идея поиска наибольшего элемента массива мажет быть представлена следующим образом:

  • возьмём верхнюю карточку (первый элемент массива), запомним имеющееся на карточке число (запишем его мелом на доске) как наибольшее из просмотренных; уберём карточку в сторону;
  • возьмём следующую карточку; сравним числа, записанные на карточке и на доске; если число на карточке больше, то сотрём число, записанное на доске, и напишем там то же число, что и на карточке; если же новое число не больше, то на доске оставим имеющуюся запись; уберём карточку в сторону;
  • повторим действия, описанные в пункте \(2\), для всех оставшихся карточек в стопке.
 

В итоге на доске будет записано самое большое значение просмотренного массива.

Так как доступ к значению элемента массива осуществляется по его индексу, то при организации поиска наибольшего элемента в одномерном массиве правильнее искать его индекс.

  

1.png
 

Результатом решения задачи второго типа (нахождение элемента массива, значение которого равно заданному значению) может быть: 

  • \(n\) индекс элемента массива такой, что \(a[n]=x\), где \(x\) заданное число;
  • сообщение о том, что искомого элемента в массиве не обнаружено.
 

Алгоритм поиска в сформированном нами массиве \(a\) значения, равного \(50\), может выглядеть так:

n:=0;

for i:=1 to 10 do

if a[i]=50 then n:=i;

if n=0 then write ('Нет') else write (i)

  

В этой программе последовательно просматриваются все элементы массива. Если в массиве несколько элементов, значения которых равны заданному числу, то программа найдет последний из них.

Во многих случаях требуется найти первый из элементов, имеющих соответствующее значение, и дальнейший просмотр массива прекратить. Для этой цели можно использовать следующую программу:

i:=0;

repeat

i:=i+1;

until(a[i]=50) or (i=10);

if a[i]=50 tehn write (i) else write ('Нет');

  

Здесь выполнение алгоритма будет прервано в одном из двух случаев:

  • в массиве найден первый из элементов, равный заданному;
  • все элементы массива просмотрены.
 

Зачастую требуется определить количество элементов, удолетворяющих некоторому условию. В этом случае вводится переменная, значение которой увеличивается на единицу каждый раз, когда найден нужный элемент.

Источники:
Босова Л. Л., Босова А. Ю., Информатика: учебник для 9 класса. М. : БИНОМ. Лаборатория знаний, 217 с.