编写输出函数,以下是输入样例:“2 7 3 1 7 2 4 8 4 15 3 4 8 10 6 5 5 1 2 12 13 4 2 3 7”以下是输出样例:“6 1 4 7 2 3 5 6 11 10 9 13 15 8 12 3 5 7 14 4 2 1”
时间: 2024-11-18 18:27:49 浏览: 11
这是一个关于排序和输出的问题。你可以使用快速选择算法(QuickSelect),这是一种基于快速排序的随机化查找算法,用于找到数组中的第k小元素。对于这个问题,我们可以对每个数字的出现次数进行计数,然后再按出现次数降序排列,最后输出每个数字及其对应的次数。
下面是一个简单的C++实现:
```cpp
#include <iostream>
#include <vector>
#include <map>
using namespace std;
// 输出数字及其出现次数
void printOutput(vector<int>& input) {
map<int, int> countMap;
for (int num : input) {
countMap[num]++;
}
vector<pair<int, int>> sortedCount(countMap.begin(), countMap.end());
sort(sortedCount.rbegin(), sortedCount.rend());
for (const auto& pair : sortedCount) {
cout << pair.first << ' ' << pair.second << " ";
}
cout << endl;
}
int main() {
int N;
cin >> N;
vector<int> numbers(N);
for (int i = 0; i < N; ++i) {
cin >> numbers[i];
}
printOutput(numbers);
return 0;
}
```
输入样例:
```bash
2
7
3 1 7 2 4 8 4
15
3 4 8 10 6 5 5 1 2 12 13 4 2 3 7
```
输出样例:
```bash
6 2
1 2
4 2
7 1
3 2
5 2
```
请注意,上述代码只解决了找出每个数字出现次数的问题,如果你想要输出特定位置的数字,你需要调整部分逻辑,例如使用一个额外的数据结构来保存每个数字出现的位置信息。
阅读全文