公司员工的年龄排序
2014-03-23 22:57
232 查看
取值范围一定(0-100),且远小于记录数的排序(可能上万)。
这是如果可以使用O(n)的辅助空间,可以使时间复杂度降低到O(n)。
用age[10]模拟年龄1-10。25个数据模拟员工数。age数组记录下标表示的年龄人数。统计完age相当于排好了序,然后写入data数组就可以。
#include <stdio.h>
#include <stdlib.h>
void sort(int data[],int length)
{
int age[10],i,j,c = 0;
if(data == NULL || length <= 0)
return;
for(i = 0;i < 10;i++){
age[i] = 0;
}
for(i = 0;i < length;i++){
if(data[i] < 0 || data[i] > 10)
return;
age[data[i]] ++;
}
for(i = 0;i < 10;i++)
for(j = 0;j < age[i];j++)
data[c++] = i;
}
void main()
{
int d[25] = {1,2,3,4,5,4,6,5,4,8,4,7,2,5,5,5,3,9,7,7,4,6,7,5,8},i;
sort(d,25);
for(i = 0;i < 25;i++)
printf("%d ",d[i]);
}
这是如果可以使用O(n)的辅助空间,可以使时间复杂度降低到O(n)。
用age[10]模拟年龄1-10。25个数据模拟员工数。age数组记录下标表示的年龄人数。统计完age相当于排好了序,然后写入data数组就可以。
#include <stdio.h>
#include <stdlib.h>
void sort(int data[],int length)
{
int age[10],i,j,c = 0;
if(data == NULL || length <= 0)
return;
for(i = 0;i < 10;i++){
age[i] = 0;
}
for(i = 0;i < length;i++){
if(data[i] < 0 || data[i] > 10)
return;
age[data[i]] ++;
}
for(i = 0;i < 10;i++)
for(j = 0;j < age[i];j++)
data[c++] = i;
}
void main()
{
int d[25] = {1,2,3,4,5,4,6,5,4,8,4,7,2,5,5,5,3,9,7,7,4,6,7,5,8},i;
sort(d,25);
for(i = 0;i < 25;i++)
printf("%d ",d[i]);
}
相关文章推荐
- 剑指offer 对公司上万名员工按照年龄排序
- 剑指offer 2.4 在O(n)时间排序公司所有员工的年龄
- 【剑指 offer】—— 为公司员工的年龄排序
- 对公司所有员工的年龄排序
- 公司员工的年龄的排序
- 某公司有几万名员工,请完成一个时间复杂度为O(n)的算法对该公司员工的年龄作排序,可使用O(1)的辅助空间
- 一个公司员工年龄统计并排序
- 算法题目---求公司内员工的年龄排序---用空间换取时间O(n)
- 实现一个算法,对公司员工年龄进行排序,时间效率要求O(n)
- 实现一个算法,对公司员工年龄进行排序,时间效率要求O(n)
- 公司员工年龄的排序,时间效率为O(n)
- 题目:某公司有几万名员工,请完成一个时间复杂度为O(n)的算法对该公司员工的年龄作排序,可使用O(1)的辅助空间。
- 对公司员工年龄进行排序,java实现
- 对公司所有员工的年龄排序
- Java实现对公司所有员工的年龄排序
- 【九度】题目1374:所有员工年龄排序
- 九度0J 1374 所有员工年龄排序
- 九度oj-1374-所有员工年龄排序
- 算法-面试题2万多名员工按年龄排序
- 【剑指offer】员工年龄排序