题目描述:

输入一个数组的值,求出各个值从小到大排序后的次序。

输入:

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

输出:

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

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





AC代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include<stdio.h>
#include<algorithm>
using namespace std;
int main()
{
    int i,j,a[10100],n,b[10100],flag,k,c[10100];
    while(scanf("%d",&n)!=EOF)
    {
        k=0;
        for(i=0;i<n;i++)
        {
            flag=1;
            scanf("%d",&a[i]);       
            for(j=0;j<i;j++)
                if(a[j]==a[i])
                {
                    flag=0;
                    break;
                }
                if(flag==1) b[k++]=a[i];
        
        sort(b,b+k);
        for(i=0;i<n;i++)
            for(j=0;j<k;j++)
                if(a[i]==b[j]) c[i]=j+1;
                for(j=0;j<n-1;j++)
                    printf("%d ",c[j]);
                printf("%d\n",c[n-1]);
    }
    return 0;
}
/**************************************************************
    Problem: 1167
    User: saylst
    Language: C++
    Result: Accepted
    Time:190 ms
    Memory:1056 kb
****************************************************************/