时间效率为O(n)的特殊排序算法-剑指offer
来源:互联网 发布:linq to sql pdf 编辑:程序博客网 时间:2024/05/29 01:53
题目:
对所有员工年龄排序,可以使用辅助空间,但不得超过O(n)
算法:
数字的大小在一个比较小的范围内,可以使用数组计数法排序。
公司员工的年龄是用一个范围,数组timesOfAge用来统计每个年龄出现的次数。从小到大遍历年龄,更新排序后的ages数组,到某个年龄时到timesofage数组里找此年龄出现的次数,顺序写到ages后,相当于从小到大排序。
void SortAges(int ages[],int length){ //ages 里保存未排序的员工年龄,length为员工数 if(ages == NULL || length <= 0) return ; //设定年龄最大值为99,限定在0~99之间 const int oldestage = 99; //初始化年龄次数记录数组,数组内保存年龄对应出现的次数 int timesOfAges[oldestage+1]; for (int i = 0; i < oldestage; i++) { timesOfAges[i] = 0; } //统计次数 for (int j = 0; j < length; j++) { if(ages[j] <0 || ages[j] > 99) return ; int age = ages[j]; timesOfAges[age] += 1; } //index记录更新后的ages数组下标 int index = 0; //i 记录年龄递增 for (int i = 0; i <= oldestage; i++) { //j记录timesofages数组内同一个年龄出现的次数,同时放入ages数组内更新 for (int j = 0; j < timesOfAges[i]; j++) { ages[index++] = i; } }}
0 0
- 时间效率为O(n)的特殊排序算法-剑指offer
- 时间效率O(N)的排序
- 号称效率为O(n)的排序算法-----计数排序
- 公司员工年龄的排序,时间效率为O(n)
- 实现一个时间效率为O(N)的排序算法
- 时间复杂度为O(n)的排序算法--计数算法
- 剑指offer,时间复杂度为o(n)的空格替换算法,44页例子代码
- 一个时间效率为O(n)的排序算法(Java实现)
- 时间复杂度为O(n)的排序算法
- 面试9:时间复杂度为O(n)的排序算法
- 基于时间复杂度为O(n)的排序算法
- 时间复杂度为O(N),空间复杂度为O(1)的排序算法
- 时间复杂度为O(n)的排序
- 时间为O(n)的排序方法
- 时间复杂度为O(n)的排序
- 一个时间效率为n的排序算法
- 有1,2...一直到n的无序数组,求排序算法,并且要求时间复杂度为O(n),时间复杂度为O(1)
- Java练习:时间复杂度为O(n*n)的三大基本排序算法
- Python与图像处理5
- mysql插入中文内容出错问题解决
- Forge定位功能使用教程
- touch事件
- EM 算法
- 时间效率为O(n)的特殊排序算法-剑指offer
- HTTP与HTTPS的区别
- cocos2dx源码分析:定时器Scheduler
- 程序与作文
- 对WEB标准以及W3C的理解与认识?
- nrf52832 之 广播信道设置
- 第k个数
- 高斯混合模型GMM的EM算法实现(聚类)
- hadoop随笔三之hive2.1安装(元数据存储oracle)