给定一个整数序列,每个元素出现的次数称为重数,重数最大的元素称为众数。编写一个程序,对递增有序序列S求众数。例如S={1,2,2,2,3,3,5},多重集合S的众数为2,其重数为3。 代码
时间: 2024-11-15 18:25:35 浏览: 25
计算指定项目的值出现次数最多的众数及众数出现次数.xlsm
给定一个递增有序的整数序列 S,求解其中的众数,可以采用简单线性的扫描算法。因为序列是有序的,所以当遇到第一个重复的元素时,我们就找到了众数。以下是使用Python实现的一个简单示例:
```python
def find_majority_element(S):
if not S: # 检查序列是否为空
return None
count = 1 # 初始化计数器
majority = S[0] # 记录当前多数元素
for i in range(1, len(S)):
if S[i] == majority: # 如果当前元素等于多数元素,计数器加一
count += 1
else: # 如果当前元素不同,计数器减一
count -= 1
if count == 0: # 当计数器为零时,更新多数元素和计数器
majority = S[i]
count = 1
# 返回众数
return majority
# 测试例子
S = [1, 2, 2, 2, 3, 3, 5]
print(find_majority_element(S)) # 输出:2
```
这个函数遍历一次数组,利用了有序特性,时间复杂度是O(n),空间复杂度是O(1)。
阅读全文