Алгоритм поиска максимального элемента неупорядоченного массива заключается в следующем:
- сначала мы предполагаем, что наибольший элемент находиться в начале массива;
- сохраняем значение первого элемента в переменной;
- затем мы сравниваем его с другими элементами массива один за другим, если какой-либо элемент больше, чем наш предполагаемый максимум, то обновляется значение переменной;
- после обхода всего массива, возвращаем максимальный элемент.
Код программы для поиска максимального элемента массива
{$CODEPAGE UTF8}
program Maximal;
const
arrayLength = 10;
var
inputArray : array [1..arrayLength] of integer;
maximum, i: integer;
begin
randomize;
writeln ('Исходный массив: ');
{заполнение случайными числами}
for i := 1 to arrayLength do
begin
inputArray[i] := random(100);
write (inputArray[i]:4);
end;
writeln;
{поиск максимального значения}
{считаем что первый элемент и есть максимальный}
maximum := inputArray[1];
for i := 2 to arrayLength do
if maximum < inputArray[i] then {если текущее значение больше максимального}
maximum := inputArray[i]; {присваиваем максимуму текущее значение}
write('Максимальный элемент массива ', maximum);
readln;
end.
Рекурсивный алгоритм нахождения максимального значения элемента массива
Найти максимальный элемент массива, можно также - рекурсивно. Реализация метода немного сложнее предыдущего, однако полезна для изучения принципов рекурсивных вызовов функций.
{$CODEPAGE UTF8}
program Maximum;
const
arrayLen = 10;
var
inputArr : array [1..arrayLen] of integer;
max, i: integer;
function MaxElement(maximal, index: integer):integer;
begin
if index > arrayLen then
MaxElement := maximal
else
begin
if inputArr[index] > maximal then
maximal := inputArr[index];
MaxElement := MaxElement(maximal, index + 1); {рекурсивный вызов}
end;
end;
begin
randomize;
writeln ('Исходный массив: ');
for i := 1 to arrayLen do
begin
inputArr[i] := random(100);
write (inputArr[i]:4);
end;
writeln;
{рекуррентный поиск максимума}
max := inputArr[1];
max := MaxElement(max, 2);
write('Наибольший элемент ', max);
readln;
end.