面试9:时间复杂度为O(n)的排序算法
来源:互联网 发布:java md5签名算法 编辑:程序博客网 时间:2024/04/28 00:03
题目:
实现一个排序算法,给公司年龄排序,公司几万人,要求时间复杂度为O(n),空间复杂度为常数。
思路:
公司年龄范围在1-100之间,所以可以用一个size为100的数组来存储每个年龄对应的人数,然后从小到大输出该年龄对应次数即可。
#include <iostream>#include <vector>#include <string>#include <stack>using namespace std;void sort(vector<int> &nums){int size = nums.size();vector<int> count(100, 0);for (int i = 0; i < size; ++i)count[nums[i]-1]++;int index = 0;for (int i = 0; i < 100; ++i)for (int j = 0; j < count[i]; ++j)nums[index++] = i+1;}int main(){int arr[] = { 90, 90, 91, 93, 91, 89, 88, 89, 100, 1 };vector<int> nums(arr, arr + 10);sort(nums);for (int i = 0; i < nums.size(); ++i)cout << nums[i] << " ";cout << endl;return 0;}
0 0
- 面试9:时间复杂度为O(n)的排序算法
- 时间复杂度为O(n)的排序算法--计数算法
- 时间复杂度为O(n)的排序算法
- 基于时间复杂度为O(n)的排序算法
- 时间复杂度为O(N),空间复杂度为O(1)的排序算法
- 时间复杂度为O(n)的排序
- 时间复杂度为O(n)的排序
- 实现排序算法,时间复杂度为O(n)
- 不用额外空间的整数交换以及时间复杂度为O(n)空间复杂度为O(1)的排序算法
- Java练习:时间复杂度为O(n*n)的三大基本排序算法
- C/C++面试之算法系列--1~n无序数组时间复杂度为O(n)排序
- O(N)时间复杂度的排序算法-计数排序
- 基于堆栈的时间复杂度为O(n)的箱子排序算法实现
- 时间复杂度为O(n+t)的排序
- 用哈希算法的思想解决排序和字符串去重问题,时间复杂度为O(N)
- 有1,2...一直到n的无序数组,求排序算法,并且要求时间复杂度为O(n),时间复杂度为O(1)
- 排序的时间复杂度为O(n),空间复杂度为O(1)
- 排序算法-o(n)时间复杂度
- VTK Error: no override found for 'vtkVolumeTextureMapper2D'.
- mysql 之 explain
- MAC系统 批量删除一个项目中的所有.svn
- Linux下查看环境变量
- 将某个view 放在窗口的最顶层
- 面试9:时间复杂度为O(n)的排序算法
- Gradle finished with non-zero exit value 1 (ic_launcher.png: error: Duplicate file)
- html5上传图片带进度条,适用于手机端网页
- 悬浮窗的实现
- java多线程--ThreadLocal类
- Java之美[从菜鸟到高手演变]之设计模式
- python学习笔记
- freebsd构建NFS服务器
- IOS NSString 截取,objectAtIndex,rangeOfString,stringWithContentsOfFile,NSEnumerator