From 94cb56b13469c5c35e0fb8e05b0f3056a1718843 Mon Sep 17 00:00:00 2001 From: Abhishekgupta204 <116148980+Abhishekgupta204@users.noreply.github.com> Date: Wed, 25 Oct 2023 20:15:07 +0530 Subject: [PATCH] Added majority element in c++ --- DSA 450/Arrays/Majority_element.cpp | 64 +++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 DSA 450/Arrays/Majority_element.cpp diff --git a/DSA 450/Arrays/Majority_element.cpp b/DSA 450/Arrays/Majority_element.cpp new file mode 100644 index 00000000..bf8d7ef4 --- /dev/null +++ b/DSA 450/Arrays/Majority_element.cpp @@ -0,0 +1,64 @@ +// C++ Program for finding out +// majority element in an array +#include +using namespace std; + +/* Function to find the candidate for Majority */ +int findCandidate(int a[], int size) +{ + int maj_index = 0, count = 1; + for (int i = 1; i < size; i++) { + if (a[maj_index] == a[i]) + count++; + else + count--; + if (count == 0) { + maj_index = i; + count = 1; + } + } + return a[maj_index]; +} + +/* Function to check if the candidate +occurs more than n/2 times */ +bool isMajority(int a[], int size, int cand) +{ + int count = 0; + for (int i = 0; i < size; i++) + + if (a[i] == cand) + count++; + + if (count > size / 2) + return 1; + + else + return 0; +} + +/* Function to print Majority Element */ +void printMajority(int a[], int size) +{ + /* Find the candidate for Majority*/ + int cand = findCandidate(a, size); + + /* Print the candidate if it is Majority*/ + if (isMajority(a, size, cand)) + cout << " " << cand << " "; + + else + cout << "No Majority Element"; +} + +/* Driver code */ +int main() +{ + int a[] = { 1, 3, 3, 1, 2 }; + int size = (sizeof(a)) / sizeof(a[0]); + + // Function calling + printMajority(a, size); + + return 0; +}