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;
Он делает ещё один проход по массиву и выводит все элементы, встречающиеся максимальное число раз.
гостевая; E-mail |