a sort and another traversal would also do the same job in o( nlogn + n ) ??
On Fri, Apr 15, 2011 at 12:49 AM, vishwakarma <[email protected]>wrote: > complexity : O(n) + O(nlogn) > > Sweety wrote: > > Question :Let A[1..n] be an array of integers. Design an efficient > > divide and conquer algorithm to determine if A contains a majority > > element, i.e an element appears more than n/2 times in A. What is the > > time complexity of your algorithm? > > > > Answer: > > a[1..n] is an array > > int majorityElement(int a[], int first, int last) > > { > > If (first = = last) > > { > > return a[first]; // Array has one element and its count = > 1 > > and it is major element > > } > > mid= (first+last)/2; > > > > (majorL,countL)= majorityElement(a,first,mid); > > (majorR,countR)= majorityElement(a,mid > > +1,last); > > n = total elements in an array; > > If(majorL==majorR) > > return(countL+countR); > > else > > { > > If(countL>countR) > > return(majorL,countL); > > elseif(countL< countR) > > return(majorR,countR); > > else > > return(majorL,majorR); > > } > > if(countL>n/2) > > temp1=majorL; > > if(countR>n/2) > > temp2=majorR; > > > > If(temp1 = = temp2) > > return temp1; > > elseif(countL>countR) > > return temp1; > > else (countR>countL) > > return temp2; > > else > > return -1; > > } > > > > int main() > > { > > int a[8] = {2,3,2,2,4,2,2,2}; > > int first =1; > > int last=8; //change the value of last when the array > > increases or decreases in size > > int x = majorityElement(a,first,last); > > if(x= = -1) > > printf(“No Majority Element”) > > else > > Majority element = x; > > } > > -- > You received this message because you are subscribed to the Google Groups > "Algorithm Geeks" group. > To post to this group, send email to [email protected]. > To unsubscribe from this group, send email to > [email protected]. > For more options, visit this group at > http://groups.google.com/group/algogeeks?hl=en. > > -- regards, chinna. -- You received this message because you are subscribed to the Google Groups "Algorithm Geeks" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/algogeeks?hl=en.
