离散化操作代码

 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 }
posted @ 2020-01-14 17:52  古比  阅读(373)  评论(0编辑  收藏  举报