1. 程式人生 > >陣列中尋找出現次數最多的一個數

陣列中尋找出現次數最多的一個數

//第一種方法 #include #include<stdlib.h> using namespace std; //以空間換取時間 //時間複雜度分析2n1+2n2 //空間複雜度為n2 int search(int* a, int len) { int tmp[100] = {0}; int key = 0; int max = 0; int index=0; for (int i = 0; i < len; i++)//2n1 { key = a[i]; tmp[key]++; } for (int i = 0; i < 100; i++)//2n2 { if (max < tmp[i]) { max = tmp[i]; index=i; } } return index; } void main() { int a[1000] = { 0 }; for (int i = 0; i < 1000; i++) { a[i] = rand()%100; } cout << “出現次數最多的數為:” << search(a, 1000) << endl; system(“pause”); }

//第二種方法 #include #include<stdlib.h> #include using namespace std; //時間複雜度分析n //空間複雜度分析<n //時間換空間 int search(int *a, int len) { map<int,int> tmp; for (int i = 0; i < len; i++) { pair<map<int,int>::iterator,bool> pairit=tmp.insert(pair<int,int>(a[i],1)); if (!pairit.second) { tmp[a[i]]++; } } int max = 0; int num = 0; for (int i = 0; i <len; i++) { if (max < tmp[a[i]]) { max = tmp[a[i]]; num = a[i]; } } return num; }

void main() { int a[1000] = { 0 }; for (int i = 0; i < 1000; i++) { a[i] = rand() % 100; } cout << “出現次數最多的數為:” << search(a, 1000) << endl; system(“pause”); }