#include<iostream>
#include<algorithm>
using namespace std;
//定义存放数据的数组,设值为全局变量
const int M=10000000+5;
int a[M];
int main()
{
int T;
//输入T组数据
cin >> T;
while(T--)
{
int n;
cin >> n;
//输入数据
for(int i=0; i<n; ++i)
{
cin >> a[i];
}
//对输入的数组进行排序
sort(a,a+n);
//找出现次数大于n/2的id号
int cnt=1, value=a[0];
for(int i=1; i<n; ++i)
{
if(a[i]==value)
{
cnt++;
//判断cnt是否符合条件
if(cnt>n/2)
{
cout << value << endl;
break;
}
}else{
value=a[i];
cnt=1;
}
}
}
return 0;
}#include<stdio.h>
const int M=10000000+5;
int a[M];
int search(int A[], int length)
{
int k, j=0;
for(int i=0; i<length; ++i)
{
if(j==0)
{
k=A[i];
}
if(k==A[i])
{
++j;
}else{
--j;
}
}
return k;
}
int main()
{
int T;
scanf("%d",&T);
while(T--)
{
int n;
scanf("%d",&n);
for(int i=0; i<n; ++i)
{
scanf("%d",&a[i]);
}
//找出出现次数大于一半的ID号
printf("%d\n",search(a,n));
}
}原文:http://blog.csdn.net/computer_liuyun/article/details/42062223