zoukankan      html  css  js  c++  java
  • 对大量人的年龄排序

    问题描述:

    公司总共有几万名员工,对这些员工的年龄排序。要求只需用少量的辅助内存。

    思路解析:

    年龄总数在一个很小范围,例如0-100.这就可以用一个小数组存储了。逐个统计

    年龄即可

    参考代码:

    void SortAge(int age[],int length)
    {
        if (age == NULL || length == 0)
        {
            return;
        }

        const int oldestAge = 99;
        int TimeOfAges[oldestAge+1];

        for (int i = 0; i <= oldestAge;i++)
        {
            TimeOfAges[i] = 0;
        }
       
        //统计各年龄段的人数
        for (int i = 0;i < length;i++)
        {
            if (age[i] < 0 || age[i] > oldestAge)
            {
                throw new exception("age out of range");
            }
            ++TimeOfAges[age[i]];
        }

        //在原数组中根据统计到人数将数组重新排序
        //比如年龄最小的20岁有33个人,那么原数组前二十三个元素的值被置为20
        //以此类推这样整个数组就排序好了
        int index = 0;
        for (int i = 0;i <= oldestAge;i++)
        {
            for (int j = 0;j < TimeOfAges[i];j++)
            {
                age[index] = i;
                ++index;
            }
        }
    }

    生命在于折腾,生活就是如此的丰富多彩
  • 相关阅读:
    回答自己的提问
    <构建之法>13——17章的读后感
    <构建之法>10,11,12章的读后感
    <构建之法>8,9,10章的读后感
    作业5.2
    【作业报告】作业5 四则运算 测试与封装 5.1 改进版
    作业 5.1
    阅读
    做汉堡
    阅读《构建之法》
  • 原文地址:https://www.cnblogs.com/Mr-Zhong/p/4131137.html
Copyright © 2011-2022 走看看