Pers.narod.ru. Алгоритмы. Самый часто встречающийся элемент в массиве |
Определить, какой элемент повторяется в массиве A[1],...,A[N] наибольшее число раз, вывести этот элемент и его порядковый номер.
Эта задача намного проще, чем, например, поиск цепочки повторяющихся значений. При этом создания
дополнительных массивов нам не понадобится, мы просто сравним элементы по принципу "каждый с каждым" и
будем искать максимум от количества выполнений равенства a[i]=a[j].
const n=10;
a: array [1..10] of integer = (1,2,0,1,2,1,3,3,4,2);
var i,j,k,l,max:integer;
begin
max:=0;
for i:=1 to n-1 do begin
k:=1;
for j:=i+1 to n do if a[i]=a[j] then inc(k);
if k>max then begin max:=k; l:=i; end;
end;
writeln ('Элемент=',a[l],', его номер=',l,', ',max,' раз(а)');
reset (input); readln;
end.
Искомых элементов может быть несколько,
если нужно найти не первый, а последний из них изменится только знак ">" на ">=" в операторе if k>max.
Если нужно найти все элементы, встречающиеся максимальное число раз, самое простое поступить так:
после поиска максимума вместо единственного оператора печати ответа writeln поставить следующий блок кода:
for i:=1 to n-1 do begin
k:=1;
for j:=i+1 to n do if a[i]=a[j] then inc(k);
if k=max then begin
writeln ('Элемент=',a[i],', его номер=',i,', ',max,' раз(а)');
end;
end;
Он делает ещё один проход по массиву и выводит все элементы, встречающиеся максимальное число раз.
|
|