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;
            }
        }
    }

    生命在于折腾,生活就是如此的丰富多彩
  • 相关阅读:
    wc
    1.11考试
    diff
    C++11新利器
    vimdiff
    [学习笔记]多项式
    rev
    [AH2017/HNOI2017]礼物
    tr
    bzoj2555: SubString
  • 原文地址:https://www.cnblogs.com/Mr-Zhong/p/4131137.html
Copyright © 2011-2022 走看看