寻找主元素

int Majority(int A[],int n){
    int i,c,count=1;       //c用来保存候选主元素,count用来计数
     c=A[0];               //设置A[0]为候选主元素
     for(i=1;i<n;i++)      //查找候选主元素
        if(A[i]==c)
           count++;        //对A中的候选主元素计数
        else
           if(count>0)     //处理不是候选主元素的情况
              count--;
           else  {         //更换候选主元素,重新计数
             c=A[i];
             count=1;
                 }
      if(count>0)
          for(i=count;i<n;i++)   //统计候选主元素的诗集出现次数
              if(A[i]==c)
                count++;
              if(count>n/2)  return c;  //确认候选主元素
              else return -1:        //不存在主元素
}

主元素为一组数据中出现次数超过一 半的元素。

复杂度为O(n),空间复杂度为O(1)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值