找主元素

一、问题

    序列A[1..n]中是存在主元素? 若有请找出来。
注: A 中主元素是指在A中出现次数多于? n/2?次的元素。

二、算法1——穷举法

时间复杂度:Q(n2)

三、算法2——利用排序算法

时间复杂度:Q(nlogn)

四、算法3——利用找中值元素的算法

时间复杂度:Q(n)

五、算法4


1.算法基本思想
如果删去原序列中的两个不同元素,则原序列中的主元素仍然在剩下的序列中 。

2.算法 MAJORITY

Algorithm  MAJORITY
Input:A array A[1..n] of n elements.
Output: The majority element if it exists;otherwise none.

    1. c←candidate(1)
    2. count←0
    3. for j←1 to n
     4.    if A[j]=c then count←count+1
     5. end for
     6. if count>[n/2] then return c
     7. else return none

Procedure candidate(m)
     1. j←m; c←A[m]; count←1
     2. while j<n and count>0
     3.   jj+1
     4.   if A[j]=c then count←count+1
     5.   else count←count-1
     6. end while
     7. if j=n then return c    {See Exercises 5.31 and 5.32}
     8. else return candidate(j+1) 
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值