离散化
离散化:
我们不需要知道这个数多大,我只要知道这个数在这里相对大小
举个粟子:(这个只是便于理解)
原数组:1 50000 600000 70000 600000
我们要统计这个数组里面的数字比其他的要小的有多少个
我们可以这样子处理:
离散化数组:1 2 3 4 3
这样子是不是可以对付很大的数字(比如:2^32,映射成为某一个数值),进行映射过来
方便处理
先假设i = 1下标开始
nums[n]代表原来数组
rank[n]代表着新的数组
两个数组每一个数字相同
sort(rank+1 , rank+n+1);
cnt = unique(rank+1 , rank+n+1) - rank - 1;//离散数组大小
for(int i=1; i<=n; i++)
num[i] = lower_bound(rank+1 , rank+cnt+1 , num[i]) - rank;