Cod sursa(job #1537232)

Utilizator ThomasFMI Suditu Thomas Thomas Data 27 noiembrie 2015 02:01:05
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.63 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;
}