Мажорирующий элемент

Материал из Викиконспекты
Версия от 12:21, 24 мая 2013; 188.227.78.59 (обсуждение) ("Хитрое" решение)
Перейти к: навигация, поиск

Формулировка задачи

Требуется в массиве длиной N найти элемент, встречающийся более N/2 раз.

Решение за O(n)

Обобщение на случай поиска элемента, встречающегося N/K раз

"Хитрое" решение

Выберем случайный элемент в массиве и проверим, встречается ли он больше, чем [math]N / K[/math] раз. Будем делать так, пока не найдем нужный элемент. Утверждается, что данный алгоритм в среднем работает за [math]O(N \cdot K)[/math]

Псевдокод

Доказательство

Источники