Алгоритм голосования Бойера – Мура возвращает неверный результат [closed]

Мне нужно было найти элемент большинства в списке, и я наткнулся на алгоритм Бойера – Мура,

Поэтому я применил его, как рекомендовано, дело в том, что если большинство элементов являются последовательными, он возвращает правильный результат, но если нет, он возвращает неправильный

Это результаты после того, как я запустил тот же массив в другом массиве.

Нужно ли рассматривать какой-либо другой случай для реализации этого алгоритма?

Это похоже на общепринятый алгоритм, и я немного удивлен, получив неверный результат.

Спасибо.

0
3

package main;

public class FindMajority {

    public static void main(String[] args) {

        int[] array = {3, 2, 3, 1, 0, 3 };
        System.out.println( findMajority(array) );

        int[] array1 = {3, 3, 3, 2, 0, 1 };
        System.out.println( findMajority(array1) );

    }

    public static int findMajority(int[] arr) {

        int m = 0;
        int i = 0;
        for(int x: arr) {

            if(i == 0) {
                m = x;
                i = 1;
            } else if (m == x) {
                i = i + 1;
            } else {
                i = i - 1;
            }
        }
        return m;
    }

}

0

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *