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

/*如何在一个有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;
}
 

阅读更多
换一批

没有更多推荐了,返回首页