剑指offer- hash排序
来源:互联网 发布:block matching算法 编辑:程序博客网 时间:2024/04/30 12:41
题目描述:我们想对公司所有员工(几万名)的年龄排序。要求时间复杂度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) //某个年龄出现了多少次,就在数组ages里设置几次年龄,这样就相当于给数组排序了。 { for(int j = 0; j <timeOfAge[i]; ++j) { ages[index] = i; ++ index; } }}
0 0
- 剑指offer- hash排序
- 【剑指offer】快速排序
- 剑指offer--快速排序
- 剑指offer 快速排序
- 剑指offer 归并排序
- 剑指offer 快速排序
- 剑指offer 快速排序
- 归并排序-剑指offer
- 快速排序-剑指offer
- 堆排序-剑指offer
- 剑指offer-排序算法
- 剑指Offer 字符串排序
- 剑指offer-快速排序
- 剑指offer-堆排序
- 剑指offer-归并排序
- 剑指offer-奇偶排序
- HASH排序
- 【剑指offer】员工年龄排序
- 26. Remove Duplicates from Sorted Array
- Softmax&Overfitting&Regulization&Dropout
- 3.8学习内容-常用的Arrays工具类方法和冒泡排序
- Linux Kernel设备驱动模型之CPU相关初始化
- 深入理解JVM(一):JVM内存区域
- 剑指offer- hash排序
- 图像标定
- c++ string和char用法
- 变量的作用域
- 简单却又复杂的FizzBuzz面试编程问题
- 393. UTF-8 Validation
- 47、Rdis学习(CentOS下安装Centos 2017年3月)
- dubbo源码浅析(一)-插件化机制
- Linux Kernel设备驱动模型之驱动模型初始化