Число, чаще всего встречающееся в массиве

Задача

Определить, какое число в массиве встречается чаще всего.

Пояснение к задаче и алгоритм решения

В программах ниже ищется только первое самое встречаемое число. Если есть другое число, которое встречается с такой же частотой как первое, то оно не определяется.

Будем записывать в переменную num найденный самый встречаемый элемент, а в переменную max_frq - количество раз, которое он встречается.

Будем по-очереди (в цикле) брать элементы массива с первого до предпоследнего и сравнивать его с элементами, стоящими после него. С элементами, стоящими впереди, сравнивать не надо, т.к. если там есть равный ему, то текущий элемент уже был учтен, и количество раз, какое он встречается в массиве, уже находилось. Последний элемент не с чем сравнивать, поэтому цикл идет до предпоследнего элемента.

В теле цикла переменной frq присваивается значение 1, т.е. вначале предполагается, что текущий элемент встречается 1 раз. Далее перебираются элементы, стоящие после текущего. Если значения совпадают, то переменная frq увеличивается на 1. После того, как посчитано количество раз, какое встречается элемент, переменная frq сравнивается с max_frq. Если frq больше, то перезаписываются значения max_frq и num.

Исходный код на языке программирования Pascal

const N = 15;
var
    arr: array[1..N] of byte;
    i, k, num, frq , max_frq: byte;
begin
    randomize;
    for i:=1 to N do begin
        arr[i] := random(20);
        write(arr[i],' ');
    end;
    writeln;
 
    num := arr[1];
    max_frq := 1;
    for i:=1 to N-1 do begin
        frq := 1;
        for k:=i+1 to N do
            if arr[i] = arr[k] then
                frq := frq + 1;
        if frq > max_frq then begin
            max_frq := frq;
            num := arr[i];
        end;
    end;
 
    if max_frq > 1 then
        writeln(max_frq, ' раз(а) встречается число ', num)
    else
        writeln('Все элементы уникальны!');
end.

Пример(ы) выполнения программы на языке Pascal

5 13 2 7 3 4 3 4 9 5 1 5 7 12 18
3 раз(а) встречается число 5

Исходный код на языке программирования C

#include <stdio.h>
#define N 15
main() {
    short arr[N];
    short i, k, num, frq, max_frq;
    srand(time(NULL));
    for (i=0; i<N; i++) {
        arr[i] = rand() % 20;
        printf("%d ", arr[i]);
    }
    printf("\n");
 
    num = arr[0];
    max_frq = 1;
    for (i=0; i < N-1; i++) {
        frq = 1;
        for (k = i+1; k<N; k++)
            if (arr[i] == arr[k])
                frq += 1;
        if (frq > max_frq) {
            max_frq = frq;
            num = arr[i];
        }
    }
 
    if (max_frq > 1)
        printf("%d раз(а) встречается число %d\n", max_frq,num);
    else
        printf("Все элементы уникальны!\n");
}

Пример(ы) выполнения программы на языке C

7 18 13 15 6 16 12 5 10 15 10 2 10 7 2
3 раз(а) встречается число 10

Исходный код на языке программирования Python

from random import random
N = 15
arr = [0] * N
for i in range(N):
    arr[i] = int(random() * 20)
print(arr)
 
num = arr[0]
max_frq = 1
for i in range(N-1):
    frq = 1
    for k in range(i+1,N):
        if arr[i] == arr[k]:
            frq += 1
    if frq > max_frq:
        max_frq = frq
        num = arr[i]
 
if max_frq > 1:
    print(max_frq, 'раз(а) встречается число', num)
else:
    print('Все элементы уникальны')

Пример(ы) выполнения программы на языке Python

[7, 18, 16, 18, 1, 11, 2, 16, 2, 4, 7, 7, 10, 17, 2]
3 раз(а) встречается число 7

Исходный код на языке программирования КуМир

алг самое частое число
нач
  цел N = 15
  целтаб arr[1:N]
  цел i, k, num, frq, max_frq
  нц для i от 1 до N
    arr[i] := irand(0,19)
    вывод arr[i], " "
  кц
  вывод нс
 
  num := arr[1]
  max_frq := 1
  нц для i от 1 до N-1
    frq := 1
    нц для k от i+1 до N
      если arr[i] = arr[k] то
        frq := frq + 1
      все
    кц
    если frq > max_frq то
      max_frq := frq
      num := arr[i]
    все
  кц
 
  если max_frq > 1 то
    вывод max_frq," раз(а) встречается число ",num
   иначе
    вывод "Все элементы уникальны"
  все
кон

Пример(ы) выполнения программы на языке КуМир

1 10 11 0 11 9 18 13 6 18 0 12 18 16 14
3 раз(а) встречается число 18

Исходный код на языке программирования Basic

N = 15
dim arr(N)
for i=0 to N-1
        arr[i] = int(rand * 20)
        print arr[i] + " ";
next i
print
 
num = arr[0]
max_frq = 1
for i=0 to N-2
        frq = 1
        for k=i+1 to N-1
                if arr[i] = arr[k] then
                        frq = frq + 1
                endif
        next k
        if frq > max_frq then
                max_frq = frq
                num = arr[i]
        endif
next i
 
print max_frq + " раз(а) встречается число " + num

Пример(ы) выполнения программы на языке Basic

5 13 19 7 13 17 18 4 10 15 15 18 15 7 14
3 раз(а) встречается число 15

Тема

Массивы

Уровень сложности

Средний

Дата публикации