码迷,mamicode.com
首页 > 其他好文 > 详细

数据离散化

时间:2019-07-20 14:33:22      阅读:113      评论:0      收藏:0      [点我收藏+]

标签:std   style   bsp   ace   算法   center   nbsp   str   print   

数据离散化

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

 

使用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;
}

 

数据离散化

标签:std   style   bsp   ace   算法   center   nbsp   str   print   

原文地址:https://www.cnblogs.com/buhuiflydepig/p/11217571.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!