http://www.geeksforgeeks.org/sort-elements-by-frequency-set-2/
1 #include <iostream> 2 #include <vector> 3 #include <algorithm> 4 #include <queue> 5 #include <stack> 6 #include <string> 7 #include <fstream> 8 #include <map> 9 using namespace std; 10 11 void printarray(int arr[], int n) { 12 map<int, int> S; 13 for (int i = 0; i < n; i++) { 14 if (S.find(arr[i]) == S.end()) S[arr[i]] = 1; 15 else S[arr[i]]++; 16 } 17 map<int, vector<int> > T; 18 for (map<int, int>::iterator it = S.begin(); it != S.end(); it++) { 19 T[it->second].push_back(it->first); 20 } 21 for (map<int, vector<int> >::iterator it = T.end(); it != T.begin();) { 22 it--; 23 vector<int> tmp = it->second; 24 for (int j = 0; j < tmp.size(); j++) { 25 for (int k = 0; k < it->first; k++) cout << tmp[j] << " "; 26 } 27 } 28 } 29 30 int main() { 31 int arr[11] = {2, 3, 2, 4, 5, 12, 2, 3, 3, 3, 12}; 32 printarray(arr, 11); 33 return 0; 34 }