题目描述:我们想对公司所有员工(几万名)的年龄排序。要求时间复杂度O(n)。 分析:要排序的年龄在一个比较小的范围,假设最大的员工年龄是99。并且还可以用辅助内存。该方法用长度100的整数数组作为辅助空间换来了O(n)的时间效率。
void SortAges(
int ages[],
int length)
{
if(ages == NULL ||
length <=
0)
return;
const int oldestAge =
99;
int timesOfAge[
100];
for(
int i =
0; i <=oldestAge; ++i)
timesOfAge[i] =
0;
for(
int i =
0; i <
length; ++i)
{
int age = ages[i];
++ timesOfAge[age];
}
int index =
0;
for(
int i =
0; i <=oldestAge; ==i)
{
for(
int j =
0; j <timeOfAge[i]; ++j)
{
ages[index] = i;
++ index;
}
}
}
转载请注明原文地址: https://ju.6miu.com/read-15822.html