首页 > 代码库 > 数据的离散化
数据的离散化
使用STL算法离散化:
思路:先排序,再删除重复元素,然后就是索引元素离散化后对应的值。
假定待离散化的序列为a[n],b[n]是序列a[n]的一个副本,则对应以上三步为:
#include<cstdio>#include<algorithm>using namespace std;int a[1005];int main(){ int size,x=1,n;//离散后数组大小 scanf("%d",&n); for(int i=0;i<n;i++)scanf("%d",a+i); sort(a,a+n);size=unique(a,a+n)-a;//排序+去重 scanf("%d",&x); int find=lower_bound(a,a+n,x)-a;//用的时候加个lower_bound就行了 printf("%d",find); return 0;}
unique()函数是一个去重函数,STL中unique的函数 unique的功能是去除相邻的重复元素(只保留一个),unique(num,mun+n)返回的是num去重后的尾地址,之所以说比不真正把重复的元素删除,其实是,该函数把重复的元素一到后面去了,然后依然保存到了原数组中,然后返回去重后最后一个元素的地址,因为unique去除的是相邻的重复元素,所以一般用之前都会要排一下序。
数据的离散化
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。