在数组中寻找主要元素的算法。
这个是数据结构与算法分析-C语言描述一书的课后习题2.19的解答。
长度为n的数组A的主要元素,指的是在所有元素中出现次数超过n/2次的元素。(所以最多有一个而已。)下面的算法是Google出来的答案(原来是伪代码,我用C#实现了),教材上给的提示实在是难于理解。






































从直接上很容易感觉这个算法是正确的,证明的大致思路就是如果一个元素符合条件,那么最后返回的值就一定是它。因为它的权值是最大的,如果没有元素符合条件,那么就不会通过FindMajority中的测试。
这个算法的复杂度明显为O(n)