整数的保序离散化

整数的保序离散化

算法思想:

  • 数少但是值域大,需要映射,就叫离散化
  • 离散化与哈希:离散化是一种极其特殊的哈希,离散化需要保序,哈希是指一般意义的哈希

代码实现:

vector<int> alls;//存储所有待离散化的数据
sort(alls.begin(),alls.end());//将所有值排序
alls.erase(unique(alls.begin(),alls.end()),alls.end());//去掉重复元素
//二分求出x对应的离散化的值
int find(x)
{
    int l = 0,r = alls.size()-1;
    while(l<r)
    {
        int mid = l+r>>1;
        if(alls[mid]>=x) r=mid;
        else l=mid+1;
    }
    return l;//映射到0,1,2,3,...
    //return l+1; 映射到1,2,3,...
}
原文地址:https://www.cnblogs.com/codertea/p/13370989.html