数据结构实验之排序三:bucket sort

来源:互联网 发布:js 数组长度 编辑:程序博客网 时间:2024/05/16 01:33

题目描述

根据人口普查结果,知道目前淄博市大约500万人口,你的任务是帮助人口普查办公室按年龄递增的顺序输出每个年龄有多少人,其中不满1周岁的按0岁计算,1到2周岁的按1岁计算,依次类推,大于等于100岁的老人全部按100岁计算。

输入

 输入第一行给出一个正整数N(<=5000000),随后连续给出N个整数表示每个人的年龄,数字间以空格分隔。

输出

 按年龄递增的顺序输出每个年龄的人口数,人口数为0的不输出,每个年龄占一行,数字间以一个空格分隔,行末不得有多余空格或空行。
题解:这个题我建议最好用c做。
 

示例输入

1016 71 17 16 18 18 19 18 19 20

示例输出

16 217 118 319 220 171 1
#include<stdio.h>#include<string.h>int old[5000001];int main(){    int n,vis[101],bucket[101],i,j;    memset(vis,0,sizeof(vis));    memset(bucket,0,sizeof(bucket));   scanf("%d",&n);    for(i=0; i<n; i++)    {        scanf("%d",&old[i]);        if(old[i]>=100)        {            vis[100]=1;            bucket[100]++;        }        else        {            vis[old[i]]=1;            bucket[old[i]]++;        }    }    for(i=0; i<=100; i++)    {        if(vis[i])        {            printf("%d %d",i,bucket[i]);            break;        }    }    for(j=i+1; j<=100; j++)    {        if(vis[j])        {           printf("\n%d %d",j,bucket[j]);        }    }    return 0;}

0 0
原创粉丝点击