補充知識點
數據離散化,
爲什麼數組離散化?因爲如果用數據權值爲下標,存不下。這個時候需要把待離散化的數組中的每一個數映射到一個小一點的數組中去。
離散化關心數據的相對大小,不關心一個數具體多大。
使用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]<<" ";
}
}
離散化之後的結果