БлогNot. Как найти максимум (минимум) в массиве без использования дополнительной переменн...

Как найти максимум (минимум) в массиве без использования дополнительной переменной

Да-а, такие актуальные новогодние проблемы волнуют людей. Вот этот "супер-алгоритм", остальное, думаю, в программе понятно:

imax:=1;
for i:=2 to n do if a[i]>a[imax] then imax:=i;

Идея в том, что запоминается только номер максимального элемента imax, а для доступа к нему вполне годится a[imax] без использования дополнительной переменной для хранения значения элемента. Разумеется, в задаче на последовательность, элементы которой не хранятся в памяти одновременно и их нужно вычислять повторно, номер бы не прошёл.

Вся программа (Паскаль):

uses crt;
const n=10;
var i,imax:integer;
 a:array [1..n] of integer;
begin
 clrscr; randomize;
 for i:=1 to n do begin
  a[i]:=random(100);
  write (a[i],' ');
 end;

 imax:=1;
 for i:=2 to n do if a[i]>a[imax] then imax:=i;

 writeln;
 write ('Max=',a[imax]);
 reset (input); readln;
end.

04.01.2011, 13:55 [11064 просмотра]


теги: алгоритм pascal

К этой статье пока нет комментариев, Ваш будет первым