数据离散化

匿名 (未验证) 提交于 2019-12-02 23:49:02

数据离散化

定义:离散化,把无限空间中有限的个体映射到有限的空间中去,以此提高算法的时空效率。

使用STL离散化步骤:

1、排序

2、去重

3、索引

代码如下:

#include <iostream> #include <cstdio> #include <algorithm>  using namespace std;  int a[1005], b[1005], sub[1005]; //a[n]是即将被离散化的数组,b[n]是a[n]的副本,sub用于排序去重后提供离散化后的值  int main () {     int n;     cin >> n;     for(int i = 0; i < n; i++) {         scanf("%d", &a[i]);         sub[i] = a[i];         b[i] = a[i];     }     sort(sub, sub + n);     int size = unique(sub, sub + n) - sub; //此处为数组去重,并获取去重后的长度     for(int i = 0; i < n; i++) {            a[i] = lower_bound(sub, sub + size, a[i]) - sub; //即a[i]为b[i]离散化后对应的值,a[i]中的值是sub[i]中的下标     }     for(int i = 0; i < size; i++) {         printf("%d%c", sub[i], " \n"[i == size - 1]);     }     for(int i = 0; i < n; i++) {         printf("%d%c", a[i], " \n"[i == n - 1]);     }     return 0; }

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!