【问题】
请编写以下函数 int MajorityElement(int array[],int n);
该函数返回数组array中的多数元素。多数元素是指在占绝对多数(至少51%)的一个值。如果多数元素不存在,那么返回常量NoMajorityElement,该函数必须满足下面的条件:3. 不能改变数组中的任何元素的值。
【代码】
#include <stdio.h> void MajorityElement(int array[], int n) { int majority, i, count; majority = array[0]; count = 1; for(i = 1; i < n; i++){ if(majority != array[i]){ if(count == 0){ majority = array[i]; count++; }else{ count--; } }else{ count++; } } if(count > 0) printf("MajorityElement: %d\n", majority); else printf("NoMajorityElement\n"); } main() { int array[5] = {1, 2, 1, 2, 3}; MajorityElement(array, 5); }
C程序设计的抽象思维-算法分析-大多数元素,布布扣,bubuko.com
原文:http://blog.csdn.net/jjjcainiao/article/details/26173481