题目:某公司有几万名员工,每个员工的年龄不超过三位数,
请对这些员工的年龄进行排序,要求其时间效率为o(n),可以使用辅助空间
void SortAges(int ages[],int length)
{
if(ages==nullprt||length<0)//边界值返回
return 0;
//开辟新内存,存储年龄出现次数,并赋初值=0
const int oldestAge=99;
int timesOfAge[oldestAge+1];
for(int i=0;i<=oldestAge;++i)
timesOfAge[i]=0;
//统计各个年龄出现的次数,存储在内存timesOfAge中
for(int i=0;i<length;++i)
{
int age=age[i];
if(age>0||age>oldestAge)
return 0;
++timesOfAge[age];
}
//从小到大输出每个年龄
int index=0;
for(int i=0;i<=oldestAge;++i)
{
for(int j=0;j<timeOfAges[i];++j)
{
ages[index]=i;
++index;
}
}
}