求思路!该怎么解决

求思路!
题目描述: 
输入一个数组的值,求出各个值从小到大排序后的次序。并且要求相同的数据其序号是相同的



输入: 
输入有多组数据。
每组输入的第一个数为数组的长度n(1<=n<=10000),后面的数为数组中的值,以空格分割。



输出: 
各输入的值按从小到大排列的次序(最后一个数字后面没有空格)。


样例输入
4
-3 75 12 -3
样例输出
1 3 2 1

求思路~或者给代码看看
------解决方案--------------------
大概思路是:
1、把数据放到TreeSet中去重复以及排序;
2、再根据原来顺序,逐个获取TreeSet中的位置,即可
(如果不只是输出的话,还可以把排序和数值存放在map中)


        int num = 4;                   // 数组长度,不过个人感觉这个值没什么用处
        String data = "-3 75 12 -3";   // 数组数据
        String[] arrTemp = data.split(" ");
        
        // 根据输入的num来获取数据,如果没有num的话,就不需要这段逻辑了。
        num = arrTemp.length > num ? num : arrTemp.length;
        int[] srcData = new int[num];
        System.out.println("参与排序的数据:");
        for (int i = 0; i < num; i++) {
            srcData[i] = Integer.valueOf(arrTemp[i]);
            System.out.print(srcData[i] + " ");
        }
        
        // 通过TreeSet来排序,以及过滤重复项
        Set<Integer> set = new TreeSet<Integer>();
        for (int i = 0; i < num; i++) {
            set.add(srcData[i]);
        }             
        System.out.println("\n\n过滤重复后的排序:" + set);
        
        // 通过排序后的TreeSet,来导出原来的次序
        Integer[] intData = new Integer[set.size()];
        List<Integer> intList = Arrays.asList(set.toArray(intData));
        System.out.println("\n排序后的次序如下:");
        for (int element : srcData) {
            System.out.print(intList.indexOf(element) + 1 + " ");
        }