Counting Sort

#include <iostream>
using namespace std;
#define siz 100000000

int a[siz],b[siz],c[siz];

void counting_sort(int a[], int n, int k)
{
    for(int i=0;i<=k;i++) c[i]=0;
    for(int j=1;j<=n;j++) c[a[j]]=c[a[j]]+1;
    for(int i=2;i<=k;i++) c[i]=c[i]+c[i-1];
    for(int j=n;j>=1;j--)
    {
        b[c[a[j]]]=a[j];
        c[a[j]]-=1;
    }
    for(int i=1;i<=n;i++) cout<<b[i]<<endl;
}
int main()
{
    int n;
    while(cin>>n)
    {
        int k=0;
        for(int i=1;i<=n;i++)
        {
            cin>>a[i];
            k=max(k,a[i]);
        }
        counting_sort(a,n,k);
    }
    return 0;
}#include <iostream>
using namespace std;
#define siz 100000000

int a[siz],b[siz],c[siz];

void counting_sort(int a[], int n, int k)
{
    for(int i=0;i<=k;i++) c[i]=0;
    for(int j=1;j<=n;j++) c[a[j]]=c[a[j]]+1;
    for(int i=2;i<=k;i++) c[i]=c[i]+c[i-1];
    for(int j=n;j>=1;j--)
    {
        b[c[a[j]]]=a[j];
        c[a[j]]-=1;
    }
    for(int i=1;i<=n;i++) cout<<b[i]<<endl;
}
int main()
{
    int n;
    while(cin>>n)
    {
        int k=0;
        for(int i=1;i<=n;i++)
        {
            cin>>a[i];
            k=max(k,a[i]);
        }
        counting_sort(a,n,k);
    }
    return 0;
}

No comments:

Post a Comment