数组A[1 : : : n]
由一些无限集S的项填充。(S不必是一组
数字和订单关系不需要在它上面定义。)用一个算法来描述一个算法
最坏情况时间复杂度,O(n)确定某个项目是否超出
数组A中n / 2次。不要忘记认为你的算法是正确的并且T(n)
确实是O(n)。
答案 0 :(得分:1)
这是一个两步过程。
伪代码:
findCandidate(a[], size)
1. Initialize index and count of majority element
maj_index = 0, count = 1
2. Loop for i = 1 to size – 1
(a) If a[maj_index] == a[i]
count++
(b) Else
count--;
(c) If count == 0
maj_index = i;
count = 1
3. Return a[maj_index]
检查在步骤1中获得的元素是否为多数
printMajority (a[], size)
1. Find the candidate for majority
2. If candidate is majority. i.e., appears more than n/2 times.
Print the candidate
3. Else
Print "NONE"