离散化操作代码
1 #include<bits/stdc++.h> 2 using namespace std; 3 const int maxn=1e5+10; 4 int a[maxn]; 5 int b[maxn]; 6 int main() 7 { 8 int n; 9 scanf("%d",&n); 10 for(int i=1;i<=n;i++){ 11 scanf("%d",&a[i]); 12 b[i]=a[i]; 13 } 14 //复制一个数组为a[] 15 sort(a+1,a+1+n); //将数组a[]从小到大排序然后进行离散化 16 int limit=unique(a+1,a+1+n)-a-1; 17 for(int i=1;i<=n;i++){ 18 //将原来的值代入,就能够得出离散化后的值 19 int ans=lower_bound(a+1,a+1+limit,b[i])-a; 20 printf("%d ",ans); 21 } 22 printf("\n"); 23 return 0; 24 }