求一个整型数组中出现次数最多的一个元素,要求具备较高的效率

/*如何在一个有N个元素的整数数组中找出出现次数最多的一个整数,要求具备较高的效率.

Author:Bill Joy.

*/

#include<iostream>
#include<vector>
#include<ctime>
#include<cstdlib>

using namespace std;
const int N = 128;
int main()
{
    vector<int> vec;
    vec.reserve(N);
    srand(time(NULL));
    int i;
    for(i = 0;i<N;++i)
    {
        vec.push_back(rand()%50);
    }
    sort(vec.begin(),vec.end());
    vector<int>::iterator ite;
    for(ite = vec.begin();ite != vec.end();++ite)
    {
        cout<<*ite<<"     ";
    }
    cout<<endl;
   
    int max = 0; //记录元素出现的最大次数
    int temp = 0; //同时记录当前的元素值
    int j;
    i = 0;
    while(i<N)
    {
        int count = 1;
        for(j = i + 1;j<N && vec[i] == vec[j]; ++j)
        {
            ++count;
        }
        if(count > max)
        {
            max = count;
            temp = vec[j-1];
        }
        i = j;
    }
    cout<<"The Number is : "<<temp<<endl;
    cout<<"And the counter is : "<<max<<endl;
       
    system("pause");
    return 0;
}
 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值