Skip to content

Commit

Permalink
Merge pull request #128 from MPrathamjain/main
Browse files Browse the repository at this point in the history
Moore_voting_algo.cpp with working screenshot
  • Loading branch information
Ayu-hack authored Oct 6, 2024
2 parents c9c6d24 + 1c49747 commit f610475
Showing 1 changed file with 43 additions and 0 deletions.
43 changes: 43 additions & 0 deletions C++_Problems/Moore_voting_algo.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
//The Boyer-Moore voting algorithm is one of the popular optimal algorithms which is used to find the majority element among the given elements that have more than N/ 2 occurrences.


// C++ implementation for the above approach
#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;
}

0 comments on commit f610475

Please sign in to comment.