数组离散化

补充知识点
数据离散化,
为什么数组离散化?因为如果用数据权值为下标,存不下。这个时候需要把待离散化的数组中的每一个数映射到一个小一点的数组中去。

离散化关心数据的相对大小,不关心一个数具体多大

使用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]<<" ";
	} 
} 

离散化之后的结果
在这里插入图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章