几万个员工年龄排序

《剑指offer》2.4.2面试片段题:对公司的几万个员工年龄排序,要求时间复杂度O(n),额外空间复杂度不超过O(n)(常量级别)。

思路:类似桶排序,所有员工的年龄都在一个范围内,例如0到99,初始化一个大小为100的数组arr(数组中所有元素初始为0),遍历所有员工年龄ages,将员工年龄为0的人数放到数组的第0个位置arr[0],将员工年龄为1的人数放到数组的第1个位置arr[1]......将员工年龄为99的人数放到数组的第99个位置arr[99],遍历这个数组arr,将员工年龄(数组arr下标)排序到ages中。

代码如下:

public static void sortAge(int[] ages) {
    if (ages == null || ages.length <= 1) {
        return;
    }
    int[] arr = new int[100];
    for (int i = 0;i < ages.length;i++) {
        if (ages[i] < 0 || ages[i] > 99) {
            throw new RuntimeException("age is out of range");
        }
        arr[ages[i]]++;
    }
    int index = 0;
    for (int i = 0;i < arr.length;i++) {
        for (int j = 0;j < arr[i];j++) {
            ages[index++] = i;
        }
    }
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 第四天 数组【悟空教程】 第04天 Java基础 第1章数组 1.1数组概念 软件的基本功能是处理数据,而在处理数...
    Java帮帮阅读 5,519评论 0 9
  • 【程序1】 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔...
    开心的锣鼓阅读 8,578评论 0 9
  • 这两日,落过三两场冷雨。秋季里的干燥暖意渐渐变冷,转为能够浸入肌肤的寒。 然而大部分的树木仍翠,被风夹裹着,簌簌发...
    陈镜阅读 1,508评论 0 2
  • 置之死地而后生的快感,也许你体验过,也许你从未有过这样的体验,但我们一定遇到过困境,它使我们痛苦、纠结、愤怒、退缩...
    浅浅香荷阅读 3,359评论 0 2
  • 验证码现在无处不在,比如最常见的字母数字验证码,12306的图形验证码,简书的滑动验证码,还有一些论坛的计算验证码...
    孔垂云阅读 3,966评论 0 3

友情链接更多精彩内容