Максимальный элемент массива

Алгоритм поиска максимального элемента неупорядоченного массива заключается в следующем:

  • сначала мы предполагаем, что наибольший элемент находиться в начале массива;
  • сохраняем значение первого элемента в переменной;
  • затем мы сравниваем его с другими элементами массива один за другим, если какой-либо элемент больше, чем наш предполагаемый максимум, то обновляется значение переменной;
  • после обхода всего массива, возвращаем максимальный элемент.

Код программы для поиска максимального элемента массива

{$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.  

Смотрите также: