Cod sursa(job #1377429)

Utilizator ThomasFMI Suditu Thomas Thomas Data 5 martie 2015 21:43:00
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.62 kb
#include <fstream>
using namespace std;

ifstream f("algsort.in");
ofstream g("algsort.out");

void bitsort(int *v,int level,int st,int dr)
{
    if(st >= dr || level == -1) return;

    int bit0 = 0;
    for(int i=st;i<=dr;++i)
        if((v[i] & (1<<level)) == 0) swap(v[i],v[st+(++bit0)-1]);

    bitsort(v,level-1,st,st+bit0-1);
    bitsort(v,level-1,st+bit0,dr);
}

int main()
{
    int n;
    f>>n;

    int *v = new int[n+1];

    for(int i=1;i<=n;++i) f>>v[i];

    bitsort(v,8*sizeof(int)-1,1,n);

    for(int i=1;i<=n;++i) g<<v[i]<<" "; g<<"\n";

    f.close();
    g.close();
    return 0;
}