
简单的方法是使用sort()排序,其中需要根据要求自定义排序的优先级。
具体代码如下:
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
//FILE *stream;
//freopen_s(&stream, "data.txt", "r", stdin);
int n;
cin >> n;
vector<pair<int, int>> mp; //存储数字及其出现次数
for(int i = 0; i < 1010; i++) //按照数组下标初始化每一个元素的first值,second默认为0
{
mp.push_back({i, 0});
}
for(int i = 0; i < n; i++) //统计各个输入数字的出现次数
{
int t;
cin >> t;
mp[t].second++;
}
sort(mp.begin(), mp.end(), [](const pair<int, int> &a, const pair<int, int> &b){
if(a.second == b.second) return a.first < b.first;
return a.second>b.second;
}); //根据要求设计排序算法
for(auto &e : mp)
{
if(!e.second) break;
cout << e.first << ' ' << e.second << endl;
}
//fclose(stream);
return 0;
}
本文介绍了一种使用 C++ 实现的自定义排序算法,通过 sort() 函数并自定义比较器来实现对数字及其出现频率的优先级排序。适用于统计特定范围内整数出现频率并按频率及数值大小进行排序的场景。
833

被折叠的 条评论
为什么被折叠?



