数组离散化
補充知識點
數(shù)據(jù)離散化,
為什么數(shù)組離散化?因為如果用數(shù)據(jù)權(quán)值為下標,存不下。這個時候需要把待離散化的數(shù)組中的每一個數(shù)映射到一個小一點的數(shù)組中去。
離散化關(guān)心數(shù)據(jù)的相對大小,不關(guān)心一個數(shù)具體多大。
使用c++標準模板庫函數(shù)進行離散化代碼排序+二分查找,相對位置不變。
#include<iostream> #include<algorithm> using namespace std; const int maxn=20; int n,a[maxn],b[maxn]; int main(){cin>>n;for(int i=1;i<=n;i++){cin>>a[i],b[i]=a[i];}sort(b+1,b+n+1);for(int i=1;i<=n;i++){a[i]=lower_bound(b+1,b+1+n,a[i])-b;//離散化} for(int i=1;i<=n;i++){cout<<a[i]<<" ";} }離散化之后的結(jié)果
總結(jié)
- 上一篇: c++98不支持set初始化列表
- 下一篇: hdu1166敌兵布阵 树状数组裸题