SWUST数据结构--寻找整数序列的主元素[数组]

12人阅读 评论(0) 收藏 举报
include<iostream>
using namespace std;

int get(int a[],int n)     
{  
    int result=a[0];     //从数组1号元素开始检索
	int count=1; 
	int i;
    for(i=1;i<n;i++)     //2号元素起看是否相等
	{  
        if(a[i] == result) 
		{  
            count++;      //相等计数器+1
        }  
        else if(count == 1) 
		{   
            result=a[i];        //若不是多元则跳
            count=1;  
        } 
		else  count--;            //遇到不同的计数器-1
    }  
    
	count=0;                   //计数器置0,计算该数在数组中出现的次数
    for(i=0;i<n;i++)
	{  
        if(a[i]==result)  count++;           
    }  
    if(count>(n/2))  
        return result;  
    else  
        return -1;  
}  
    
int main()
{
	int i,n;
	int a[105];
	cin>>n;
	for(i=0;i<n;i++)
      cin>>a[i];
    int x=get(a,n);
	cout<<x;
	return 0;
}

查看评论

数据结构基础系列(5):数组与广义表

-
  • 1970年01月01日 08:00

寻找多数元素/主元素问题

问题描述: 令a[1..n]是一个整数序列,a中的整数x如果在a中出现的次数多于n/2,那么x称为多数元素。 设计一个性能比较优异的算法求解这个问题,找出一个整数序列中的多数元素。当然多数元素要么...
  • wtyvhreal
  • wtyvhreal
  • 2015-02-06 15:59:35
  • 3219

寻找一个序列中的主元素

http://yilee.info/major-element-algorithm.html http://www.cnblogs.com/ly772696417/archive/2012/03/2...
  • gukesdo
  • gukesdo
  • 2012-05-20 22:11:33
  • 4320

寻找主元素问题

寻找主元素问题,解释一下题目的意思。就是一个集合中的某个数重复出现的次数超过百分之五十。这个数被称为主元素。问题就是找出主元素。         直观第一想法,两次for循环,依次记录每个值出现多少...
  • tankpanda
  • tankpanda
  • 2016-11-22 10:43:02
  • 551

找出数组中的主元素

问题:在一个规模为N的数组A[N]中,所谓主元素就是出现次数大于N/2的元素,例如 3.3.4.2.4.4.2.4.4  有一个主元素为4。           给出一个算法,如果过半元素存在,就找...
  • tyf1271858074
  • tyf1271858074
  • 2015-04-20 14:35:46
  • 2050

主元素问题求解

1,主元素问题描述:即在数组中出现次数大于总数一半的元素。 2,当数组元素之间可以有序时 用求中位数的方法解决,因为若存在主元素,那么它一定会在中位数上出现。 中位数:数列排序后位于最中间的那个数,如...
  • zzuchengming
  • zzuchengming
  • 2015-10-27 12:09:23
  • 1241

寻找数组中的主元素

在一个数组中寻找主元素所谓主元素就是在一个数组中的某一个元素所出现的的次数大于大于数组长度的1/2算法的基本思想该算法的基本思想就是从前向后扫描数组元素,标记出一个可能成为主元素的元素Num,然后重新...
  • dream_follower
  • dream_follower
  • 2017-05-22 23:18:07
  • 360

【算法分析】寻找多数元素

解决问题:在一个整数序列A中,如果整数r在A中出现的次数大于序列A的一半,那么我们把这个r成为多数元素。如何更快的找出这个元素呢?...
  • wxm349810930
  • wxm349810930
  • 2015-09-08 15:13:17
  • 1604

寻找一个数组中的主元素

主元素就是出现次数大于数组总书目的一半。 时间复杂度要求O(N) 思路是扫描一遍数组,利用主元素出现次数大于一半,即用出现的次数减去未出现的次数,最后还是应该是大于0,一切小于0的...
  • strike1989
  • strike1989
  • 2017-05-25 11:25:02
  • 265

寻找长度为n数组中出现次数超过n/2的元素

寻找长度为n数组中出现次数超过n/2的元素。      可以暴力枚举时间复杂度为O(n^2),可以排个序然后处理时间复杂度为O(n*lon(n)),主要花在排序上。      在元素较小的情况下可...
  • xj2419174554
  • xj2419174554
  • 2014-02-28 23:26:23
  • 1187
    个人资料
    专栏达人 持之以恒
    等级:
    访问量: 546
    积分: 503
    排名: 10万+
    博客专栏
    文章分类
    文章存档