离散化

2人阅读 评论(0) 收藏 举报
分类:

为什么要离散化

在很多情况下,问题的范围虽然定义在整数集合Z,但是只涉及其中m个有限数值,并且与数值的绝对大小无关(只把这些数值作为代表,或者说只与它们的相对顺序有关)。这时候,我们就可以把整数集合Z中的这m个整数与数字1~m建立映射关系。如果有一个时间复杂度、空间复杂度与数值范围Z的大小有关的算法,在离散化后,该算法的时间、空间复杂度就降低为与m相关。
代码:

int n,m;//数组arr的大小,数组t的大小
int arr[10010];//原数组
int t[1010];//离散化后的数组
void discrete()
{
    for(int i = 1; i <= n; ++i)//复制
        t[i] = arr[i];
    sort(t + 1,t + n + 1);//排序
    m = unique(t + 1,t + n + 1) - t - 1;//去重
    return;
}
int query(int x)//数字x被哪个数字代替?
{
    return lower_bound(t + 1,t + m + 1,x) - t;
    //return upper_bound(t + 1,t + m + 1,x) - t - 1;//也行
}
int main()
{
    cin >> n;
    for(int i = 1; i <= n; ++i)//输出
        cin >> arr[i];
    discrete();//离散化
    printf("去重并离散化后数组的大小为m = %d\n",m);
    int q;//查询
    while(cin >> q)
    {
        printf("数组arr中的元素%d被数字%d(%d为数组t的下标)代替\n",q,query(q),query(q));
        printf("验证:t[%d]中存放的数字为%d\n",query(q),t[query(q)]);
    }
    return 0;
}

解决方法:

查看评论

离散化的思想和它的两种代码与区别

离散化是什么:一些数字,他们的范围很大(0-1e9),但是个数不算多(1-1e5),并且这些数本身的数字大小不重要,重要的是这些数字之间的相对大小(比如说某个数字是这些数字中的第几小,而与这个数字本身...
  • xiangAccepted
  • xiangAccepted
  • 2017-06-15 12:44:41
  • 1917

离散化黑科技

为什么要离散化当以权值为下标的时候,值太大,存不下。 然后把要离散化的每一个数组里面的数映射到另一个值小一点的数组里面去。平常的离散化平常用c++打的离散化,要排个序,有时还要打一个struct存起...
  • doyouseeman
  • doyouseeman
  • 2016-04-14 19:02:14
  • 2005

我对离散化的一些感悟

这几天在做线段树的专题,不免遇到一些题,数据很大,如果直接建树,会造成内存超出限制,这时就要进行离散化了。如果是区间的离散化,一般区间会涉及覆盖关系, 那么运用离散化之后,区间的覆盖关系不能变,例如:...
  • Guard_Mine
  • Guard_Mine
  • 2014-08-05 10:43:01
  • 1003

为什么要将连续特征离散化

在工业界,很少直接将连续值作为逻辑回归模型的特征输入,而是将连续特征离散化为一系列0、1特征交给逻辑回归模型,这样做的优势有以下几点: 0. 离散特征的增加和减少都很容易,易于模型的快速迭代; 1...
  • rosenor1
  • rosenor1
  • 2016-08-31 19:33:32
  • 734

浅谈数据离散化

转载自:http://www.cnblogs.com/kevince/p/3893531.html     ——By Kevince 最近做了一些需要离散数据的题目,比如URAL 1019 以及POJ...
  • Eternity666
  • Eternity666
  • 2017-08-17 14:49:44
  • 468

连续属性离散化

离散化技术分类连续属性的离散化方法也可以被称为分箱法,即将一组连续的值根据一定的规则分别放到其术语的集合中。 本文介绍了几种监督离散化和非监督离散化的方法。...
  • Eaton18
  • Eaton18
  • 2016-08-07 17:17:07
  • 3367

数据预处理之“分类”数据离散化

大多数机器学习算法不能识别类别数据,要求数据必须是数值型的,故作为一名合格的MLer必须对相应转换方法有所了解。 以性别为例,性别特征具有两个选项:男或女,机器学习模型搞不懂何为“男 、女”,但...
  • bbbeoy
  • bbbeoy
  • 2017-06-01 15:14:04
  • 1489

离散化介绍

离散化,把无限空间中有限的个体映射到有限的空间中去,以此提高算法的时空效率。 通俗的说,离散化是在不改变数据相对大小的条件下,对数据进行相应的缩小。例如: 原数据:1,999,100000,15;...
  • HiChocolate
  • HiChocolate
  • 2017-02-13 20:38:29
  • 565

STL unique(去重函数) 离散化的一般写法

#include #include #include #include #include #include using namespace std; mapH; vectora; int main()...
  • qq_24489717
  • qq_24489717
  • 2016-01-04 23:51:14
  • 2219

数据预处理之数据离散化

数据离散化的意义数据离散化是指将连续的数据进行分段,使其变为一段段离散化的区间。分段的原则有基于等距离、等频率或优化的方法。数据离散化的原因主要有以下几点:1**.算法需要:**比如决策树、朴素贝叶斯...
  • xzfreewind
  • xzfreewind
  • 2017-08-11 20:23:30
  • 1111
    个人资料
    持之以恒
    等级:
    访问量: 2万+
    积分: 2249
    排名: 2万+
    最新评论