概述
输入
1 2 2 1 1
输出
1 1 1 2 2
#include <iostream>
#include <vector>
#include <unordered_map>
#include <algorithm>
using namespace std;
class node {
public:
int cnt;
int index;
};
bool cmp(const pair<int, node> &a, const pair<int, node> &b)
{
if (a.second.cnt != b.second.cnt)
return a.second.cnt > b.second.cnt;
else
return a.second.index < b.second.index;
}
/*
输入
1 2 2 1 1
输出
1 1 1 2 2
*/
int main()
{
int n, c;
cin >> n >> c;
unordered_map<int, node> mp;
for (int i = 0; i < n; i++)
{
int x;
cin >> x;
if (mp.find(x) == mp.end())
{
mp.insert({ x, {1, i} });
}
else
{
mp[x].cnt++;
}
}
vector<pair<int, node>> nums(mp.begin(), mp.end()); // 把 map 整体拷贝,元素按 pair 处理
sort(nums.begin(), nums.end(), cmp);
for (int i = 0; i < (int)nums.size(); i++)
{
for (int j = 0; j < (int)nums[i].second.cnt; j++)
{
cout << nums[i].first << ' ';
}
}
return 0;
}
最后
以上就是俊逸绿草为你收集整理的频率排序:出现频率、出现先后顺序的全部内容,希望文章能够帮你解决频率排序:出现频率、出现先后顺序所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复