【0】 目录
【1】题目
【2】分析
【3】测试代码
【4】测试结果
【1】题目:
面试官: 请实现一个排序算法,要求时间复杂度为O(N)
应聘者:请问对什么数字进行排序,共有多少数字?
面试官:我们想对公司所有员工按年龄排序,我们公司共有几万名员工;
应聘者:也就是说数字的大小在一个较小的范围之内,对吗?
面试官:是的
应聘者:可以使用辅助空间吗?
面试官:看你用多少内存,只允许使用常量大小的辅助空间,不得超过O(N);
应聘者:好的,我知道了;,
【2】分析:
通过面试官的要求,我们可以确定的是,是要求在一个有限范围内排序,并且实现效率为O(N),那么我们可以将员工年纪设置在0~99范围内,借助一个辅助空间,可以是一个数组,用来保存从0到99岁这100个年龄出现的次数,某个年纪每出现一次,就给对应下标的空间加1,然后再根据这个数组中记录的次数,确定该年纪在原数组中相应出现多少次;
【3】测试实现:
#include<iostream>
using namespace std;
//=====================================算法=======&#