排序算法--对公司员工年龄的排序

来源:互联网 发布:气象数据共享服务网 编辑:程序博客网 时间:2024/05/14 02:13
/*.................................//排序算法--对公司员工的年龄排序,要求时间效率O(n)解题思路:   公司员工的年龄有一个范围 这里规定0~99   用长度100的整数数组作为辅助空间换来了O(n)的时间效率。*/#include<stdio.h>#define N 10void SortAges(int ages[],int length){int i ;if(ages == NULL ||length <= 0)return ;const int oldAge = 99; //年龄的允许范围是0~99int timeOfAge[oldAge+1];for(i = 0;i<=oldAge;i++)  //将数组timeOfAge[0]~timeOfAge[99]初始化为0timeOfAge[i] = 0;for(i = 0;i<length;++i){int age = ages[i]; //员工年龄if(age < 0||age > oldAge)printf("age out of range\n");++timeOfAge[age];//  其年龄下标对应的数组位置大小加1 ,即用来统计每个年龄出现的次数}int index = 0;for(i = 0;i <= oldAge;i++){int j ;for(j = 0;j<timeOfAge[i];++j){ages[index] = i; //某个年龄出现了多少次,就在数组ages里设置几次该年龄++index;}}}int main(){int age[N];int i;printf("请输入员工的年龄:\n");for(i = 0;i<N;i++){scanf("%d",&age[i]);}SortAges(age,N);printf("排序后员工的年龄:\n");for(i = 0;i<N;i++)printf("%d ",age[i]);return 0;}#endif
阅读全文
0 1