c++数组排序后的序号 任务描述 提交记录 编程语:C++ 难度:简单 单个测试集评测时长限制:3秒 题目描述 现有一个整数数组 arr ,请将数组中的每个元素替换成他们排序后的序号。序号编号的规则如下: 序号从 1 开始编号; 一个元素越大序号越大,若两个元素相等,则序号相同; 每个数字的序号都应当尽可能的小。 输入输出格式 输入格式 第一行有一个整数 arrSize ,表示数组 arr 的大小; 第二行有 arrSize 个整数,分别表示数组 arr 的所有元素,每个整数用一个空格隔开。 输出格式 一行输出数组 arr 中元素排序后的序号,有 arrSize 个整数,每个整数用一个空格隔开。 输入输出样例1 输入 4 40 10 20 30 输出 4 1 2 3 输入输出样例2 输入 4 100 100 100 100 输出 1 1 1 1
时间: 2024-01-18 19:03:17 浏览: 67
c++数组排序
以下是C++代码实现:
```cpp
#include <iostream>
#include <vector>
#include <algorithm>
#include <map>
using namespace std;
int main() {
int n;
cin >> n;
vector<int> arr(n);
for (int i = 0; i < n; i++) {
cin >> arr[i];
}
// 对数组进行排序
vector<int> sortedArr(arr);
sort(sortedArr.begin(), sortedArr.end());
// 记录每个数字对应的序号
map<int, int> mp;
int idx = 1;
for (int num : sortedArr) {
if (!mp.count(num)) {
mp[num] = idx++;
}
}
// 输出每个数字的序号
for (int num : arr) {
cout << mp[num] << " ";
}
cout << endl;
return 0;
}
```
首先读入整数数组,然后利用STL中的sort函数对数组进行排序。接着使用map数据结构记录每个数字对应的序号,map中的键为数字,值为序号。最后遍历原数组,输出每个数字的序号即可。
阅读全文