您的位置:首页 > 其它

找出出现次数超过数组一半元素的数

2016-03-26 11:04 330 查看
开始时k存储数组中的第一个数,j为0,如果数组出现的数于k相等,则j加1,否则就减1,如果j为0,就把当前数组中的数赋给k

因为指定的数出现的次数大于数组长度的一半,所有j++与j–相抵消之后,最后j的值是大于等于1的,k中存的那个数就是出现最多的那个数。

下面这个算法只适合数组中数组中某个数的出现次数超过数组长度一半的数组


int Search(int A[],int len)
{
if(NULL==A || len<=0)
{
return-1;
}

int k, j=0;
for(int i=0;i<len;++i)
{
if(j==0)
{
k=A[i];
}
if(k==A[i])
{
++j;
}else
{
--j;
}
}

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