离散化处理

提交数: 1564, 通过率: 39.83%, 平均分: 56.68

题目描述:

在程序设计过程中,经常要用到离散化处理,将原始数据排序,使用排序后的编号(rank值)作为新的关键字进行操作。排序后所有键值相同的数离散化处理后对应同一个编号。

输入格式:

第1行:一个整数N。
第2行:有N个整数,每个数在10^9以内。

输出格式:

依次输出每个数的rank编号。

样例输入:

4
28 5 6 5

样例输出:

3 1 2 1

提示:

1<=N<=100,000。

注意:可能有相同整数。

 

算法1提示:

1) 先sort;

2) 去重;

3) 二分查找每个值的位置。

算法2提示:

每个结构体元素中记录3项内容:(1)值,(2)原来的下标,(3)按值排序后的整理下标。

1)先按结构体中的值排序;

2)整理排序后的序号;

3)再按原始下标排序,排序后直接输出。

时间限制: 1000ms
空间限制: 128MB

来源: 原创