题目描述
学校正在选举学生会成员,有 𝑛(𝑛≤999)名候选人,每名候选人编号分别从 1到 𝑛,现在收集到了 𝑚(𝑚≤2000000)张选票,每张选票都写了一个候选人编号。现在想把这些堆积如山的选票按照投票数字从小到大排序。
输入格式
输入 𝑛 和 𝑚 以及 𝑚 个选票上的数字。
输出格式
求出排序后的选票编号。
输入输出样例
输入 #1
5 10 2 5 2 2 5 2 2 2 1 2
输出 #1
1 2 2 2 2 2 2 2 5 5
思路分析
-
输入阶段:首先读取候选人总数
n
和选票数m
,然后读取m
张选票上的候选人编号,并存储在数组a
中。 -
排序阶段:使用 C++ 标准库中的
sort
函数对数组a
进行排序。 -
输出阶段:遍历排序后的数组
a
,输出每一张选票上的候选人编号。
示例代码
#include<bits/stdc++.h> // 包含所有标准库头文件,
using namespace std;
int n, m, a[2000000]; // 声明候选人总数n,选票数m,以及存储选票的数组a
int main() {
cin >> n >> m; // 读取候选人总数n和选票数m
for (int i = 0; i < m; i++) {
cin >> a[i]; // 读取每一张选票上的候选人编号,并存储在数组a中
}
sort(a, a + m); // 对数组a进行排序,注意排序的结束位置是a + m,而不是a + m + 1
for (int i = 0; i < m; i++) { // 修改循环条件为i < m,以正确遍历排序后的数组
cout << a[i] << " "; // 输出排序后的选票编号
}
return 0;
}