Как найти максимум (минимум) в массиве без использования дополнительной переменной
Да-а, такие актуальные новогодние проблемы волнуют людей. Вот этот "супер-алгоритм", остальное, думаю, в программе понятно:
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 [11127 просмотров]