Я хочу обсудить алгоритм, который я нашел в книге структуры данных. В этой книге представлен эскиз алгоритма для нахождения элемента большинства (более чем N/2) в массиве размера N. Эскиз алгоритма выглядит следующим образом:Поиск элемента Majority в массиве
Во-первых, найден элемент-кандидат (это более сложная часть). Этот кандидат является единственным элементом, который может быть элементом большинства. Второй шаг определяет, действительно ли этот кандидат является большинством. Это просто последовательный поиск по массиву. Чтобы найти кандидата в массиве A, сформируйте второй массив B. Затем сравните A1, A2. Если они равны, добавьте одну из них в B; в противном случае ничего не делать. Затем сравните A3 и A4. Опять же, если они равны, добавьте одну из них в B; в противном случае ничего не делать. Продолжайте таким образом, пока весь массив не будет прочитан. Затем рекурсивно найдите кандидата для B; это кандидат на A.
Я понял, что N четный, алгоритм работает нормально. Но что, если N нечетно? Как мы можем справиться с этим делом?
заказал ли массив? – ChiefTwoPencils
примечание: есть лучший алорифм, который проверяет каждый элемент только один раз. –
Я думаю, что вы должны прочитать о методе Divide and Conquer – banarun