补充知识点
数据离散化,
为什么数组离散化?因为如果用数据权值为下标,存不下。这个时候需要把待离散化的数组中的每一个数映射到一个小一点的数组中去。
离散化关心数据的相对大小,不关心一个数具体多大。
使用c++标准模板库函数进行离散化代码排序+二分查找
,相对位置不变。
#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]<<" ";
}
}
离散化之后的结果