%% Boyer–Moore majority vote algorithm
% The Boyer-Moore Vote Algorithm solves the majority vote problem in
% linear time O(n) and logarithmic space O(\log n). The majority vote
% problem is to determine in any given sequence of choices whether
% there is a choice with more occurrences than all the others, and if so,
% to determine this choice. Mathematically, given a finite sequence
% (length n) of numbers, the object is to find the majority number
% defined as the number that appears more than floor(n/2) times.%
% consider we want to find the majority element in 'aaaccbbcccbcc'
% ans =
Reza Ahmadzadeh (2020). Boyer–Moore majority vote algorithm (https://www.mathworks.com/matlabcentral/fileexchange/54394-boyer-moore-majority-vote-algorithm), MATLAB Central File Exchange. Retrieved .
For an element to be considered as majority, there is a condition that says: the number of occurrence for that element has to be bigger than half of the number of elements in the sequence. In the example MajorityVote('12323234232') the element 2 has been occurred 5 times, but 5<floor(11/2) is not satisfied, so there is no majority. The answer is the same for your next example MajorityVote('3344555') where the element 5 has been repeated 3 times and floor(7/2)=3 and since 3>3 is not valid there is no majority.
Hello Reza, I tried your code using MajorityVote('12323234232') and the answer was "There is no Majority" while in fact, the answer is 2. I also tried MajorityVote('3344555') and instead of the answer being 5, it again gave me "There is no Majority". However, MajorityVote('AAAAAAAACCCCBBB') = A which is correct. Also, MajorityVote('12222') = 2 which is correct. Is the code behaving as you would expect? thanks
Find the treasures in MATLAB Central and discover how the community can help you!Start Hunting!