您的位置:首页 > 其它

数组中出现次数超过一半的数字

2014-03-20 20:23 127 查看
#include<iostream>

#include<algorithm>

#include<stdio.h>

using namespace std;

#define N 100005

int findMoreHalf(int a[],int n)

{

int i;

int num,count;

for(i=0;i<n;i++)

{

if(0==i)

{

num=a[i];

count=1;

}else

{

if(num==a[i])

count++;

else

count--;

if(count==0)

{

num=a[i];

count=1;

}

}

}

count=0;

for(i=0;i<n;i++)

if(num==a[i])

count++;

if(count>n/2)

return num;

return -1;

}

int findMoreHalfbySort(int a[],int n)

{

sort(a,a+n);

int temp=a[n/2];

int count=0;

for(int i=0;i<n;i++)

if(a[i]==temp)

count++;

if(count>n/2)

return temp;

return -1;

}

int main(int argc,char *argv[])

{

freopen("input.txt","r",stdin);

int a
,n,i;

while(scanf("%d",&n)!=EOF&&n)

{

for(i=0;i<n;i++)

scanf("%d",&a[i]);

int res=findMoreHalfbySort(a,n);

printf("%d\n",res);

}

return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: