1. 程式人生 > >求一個整型陣列中出現次數最多的一個元素,要求具備較高的效率

求一個整型陣列中出現次數最多的一個元素,要求具備較高的效率

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;
}