2011-04-09 wcdj
问题描述:
将N(1<= N <= 200000)个整数从小到大连续编号,相同的数应具有相同的编号。并按这N个数输入时的顺序输出它们的编号序列。例如,设输入数据为 5 3 4 7 3 5 6,则输出数据为3 1 2 5 1 3 4。
【输入形式】
从标准输入读取数据。
输入包含N个数字(1<= N <= 200000),之间由空格分隔,以回车符作为结束。
【输出形式】
计算结果输出到标准输出。
按这N个数输入时的顺序输出它们的编号序列。每个序号之后紧跟一个空格符,最后输出回车符。
【输入样例】
5 3 4 7 3 5 6
【输出样例】
3 1 2 5 1 3 4
方法1:不排序
时间复杂度:O(N^2)
方法2:排序
时间复杂度:O(N*lbN)
方法3:使用stl中的map

本文介绍了一种针对整数序列进行排序并重新编号的方法,包括三种不同的实现方式:不排序直接编号、快速排序后编号及利用STL map进行排序与编号。这些方法适用于处理大规模数据集,并对比了不同算法的时间复杂度。

被折叠的 条评论
为什么被折叠?



