Skip to content

Commit

Permalink
Boyer-Moore Majority Voting Algorithm
Browse files Browse the repository at this point in the history
  • Loading branch information
shivesh41kr authored Oct 11, 2022
1 parent bcf67bc commit 30afdbc
Showing 1 changed file with 48 additions and 0 deletions.
48 changes: 48 additions & 0 deletions sort/Boyer-Moore_Majority_Voting_Algorithm_in_C++.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
//Boyer-Moore Majority Voting Algorithm

#include <iostream>
using namespace std;
// Function to find majority element
int findMajority(int arr[], int n)
{
int i, candidate = -1, votes = 0;
// Finding majority candidate
for (i = 0; i < n; i++) {
if (votes == 0) {
candidate = arr[i];
votes = 1;
}
else {
if (arr[i] == candidate)
votes++;
else
votes--;
}
}
int count = 0;
// Checking if majority candidate occurs more than n/2
// times
for (i = 0; i < n; i++) {
if (arr[i] == candidate)
count++;
}

if (count > n / 2)
return candidate;
return -1;
}
int main()
{
int arr[] = { 1, 1, 1, 1, 2, 3, 4 };
int n = sizeof(arr) / sizeof(arr[0]);
int majority = findMajority(arr, n);
cout << " The majority element is : " << majority;
return 0;
}

/*
Time Complexity: O(n) ( For two passes over the array )
Space Complexity: O(1)
*/

0 comments on commit 30afdbc

Please sign in to comment.