c++在程序设计过程中,经常要用到离散化处理,将原始数据排序,使用排序后的编号(rank值)作为新的关键字进行操作。排序后所有键值相同的数离散化处理后对应同一个编号。代码
时间: 2024-02-13 07:02:02 浏览: 20
以下是一个简单的C++代码实现离散化处理:
```c++
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
// 原始数据
vector<int> data = {3, 4, 1, 5, 2};
// 排序后的数据
vector<int> sorted_data = data;
sort(sorted_data.begin(), sorted_data.end());
// 去重后的数据
sorted_data.erase(unique(sorted_data.begin(), sorted_data.end()), sorted_data.end());
// 离散化处理后的数据
vector<int> rank(data.size());
for (int i = 0; i < data.size(); i++) {
rank[i] = lower_bound(sorted_data.begin(), sorted_data.end(), data[i]) - sorted_data.begin();
}
// 输出离散化处理后的数据
for (int i = 0; i < rank.size(); i++) {
cout << rank[i] << " ";
}
cout << endl;
return 0;
}
```
这段代码首先定义了一个原始数据 `data`,然后将其排序并去重得到一个有序的数据 `sorted_data`。接着,使用 `lower_bound` 函数得到每个原始数据在有序数据中的位置,作为它的离散化处理后的编号 `rank`。最后,输出离散化处理后的数据。