Дан массив X, состоящий из n элементов. Найти максимальный (минимальный) элемент массива и номер, под которым он хранится в массиве.
Алгоритм решения задачи следующий. Пусть в переменной с именем Max (Min) хранится значение максимального (минимального) элемента массива, а в переменной с именем Nmax (Nmin)– его номер. Предположим, что первый элемент массива является максимальным (минимальным), и запишем его в переменную Max (Min),а в Nmax (Nmin) – занесем его номер, то есть – «1». Затем все элементы, начиная со второго, сравниваем в цикле с максимальным (минимальным) значением. Если текущий элемент массива оказывается больше максимального (минимального), то записываем его в переменную Max (Min),а в переменную Nmax (Nmin) – текущее значение индекса i.
Процесс определения максимального элемента в массиве приведен в таблице 1 и изображен при помощи блок-схемы на рис. 7.
Алгоритм поиска минимального элемента в массиве будет отличаться от приведенного выше лишь тем, что в условном блоке знак поменяется с > на <.
|
|
Таблица 1. Определение максимального элемента и его номера в массиве
Номера элементов | |||||||
Исходный массив | |||||||
Значение переменной Max | |||||||
Значение переменной Nmax |
Рис. 7. Поиск максимального элемента в массиве и его номера.
При программировании алгоритмов на поиск максимума (минимума) в массиве в зависимости от постановки задачи могут быть использованы разные схемы поиска (поиск наименьшего или наибольшего элемента среди всех элементов массива, либо поиск среди части элементов массива, удовлетворяющих какому-либо условию; поиск с запоминанием номера элемента или без). При этом нужно быть внимательным по отношению к использованию переменных, накапливающих информацию о минимуме (максимуме), и присваиванию этим переменным начальных значений перед циклом поиска.
Если требуется поиск максимума (минимума) в сочетании с условием отбора, то величина первого элемента, удовлетворяющего условию, не известна. В связи с этим переменной, в которой будет "накапливаться" минимум, присваивают значение +¥, под которым понимают величину, заведомо большую, чем любой из элементов массива, удовлетворяющих заданному условию. На блок-схеме разрешается писать этот знак (или -¥ для максимума), но в программе вместо +¥ или -¥ надо указывать конкретное число, которое часто можно определить из формулировки задачи. Например, если дан массив зарплат сотрудников некоего учреждения и надо найти наибольшую зарплату, ясно, что за -¥ можно взять, скажем, -1.
|
|
Если в задаче на минимум с условием надо еще и определить, где этот минимум находится, то придется завести еще одну переменную для номера минимального элемента. В качестве ее начального значения надо указать величину, которая меньше начального индекса массива (если в массиве элементы нумеруются с - то начальным значением номера минимального элемента может быть ноль).
Фрагмент программы поиска минимального элемента массива без условия (1) и с условием (2).
Фрагмент 1 Фрагмент 2
max: = x[1]; max: = -32765;
nmax = 1; nmax = 0;
for i:=2 to n do for i:=1 to n do
if max <= x[i] if max <= x[i] and x[i] = «хороший»
then begin then begin
max: = x[i]; max: = x[i];
nmax = i; nmax = i;
end; end;
«Хороший» означает, что данный элемент удовлетворяет условию задачи.