对数组A中的N(0<N<L00)个整数从小到大进行连续编号,要不能改变数组A中元素的顺序
且相同的整数具有相同的编号.例如: 若A 数组为{5,3,4,7,3,5,6} 则输出为: 3,1,2,5,1,3,4
#include<bits/stdc++.h>
using namespace std;
struct Data
{
int num;//数值
int ra;//排名
int ind;//序号
}d[10000];
bool cmpn(Data a,Data b)
{
return a.num<b.num;
}
bool cmpi(Data a,Data b)
{
return a.ind<b.ind;
}
int main()
{
int n,count=0;
cin>>n;
for(int i=0;i<n;i++)
{
cin>>d[i].num;
d[i].ind=i+1;
}
sort(d,d+n,cmpn);
for(int i=0;i<n;i++)
{
if(d[i].num!=d[i-1].num)
{
d[i].ra=++count;
}
else if(d[i].num==d[i-1].num)
{
d[i].ra=count;
}
}
for(int i=0;i<n;i++)
{
cout<<d[i].ra<<" ";
}
}