Cod sursa(job #1828081)

Utilizator PaterucAPetruc Andrei Stefan PaterucA Data 12 decembrie 2016 19:32:44
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.68 kb
#include <fstream>

using namespace std;

ifstream inf("algsort.in");
ofstream outf("algsort.out");

int n, v[500010];
void radix(int, int, int);

int main()
{
    inf>>n;
    for(int i=1; i<=n; i++)
        inf>>v[i];
    radix(1, n, 30);
    for(int i=1; i<=n; i++)
        outf<<v[i]<<" ";

    return 0;
}

void radix(int low, int hig, int b)
{
    if(low>=hig)
        return;
    if(b==-1)
        return;
    int lo=low, hi=hig, B=1<<b;

    do
    {
      while(lo<=hi&&((v[lo]&B)==0))lo++;
      while(lo<=hi&&((v[hi]&B)==B))hi--;
      if(lo<hi)
            swap(v[lo], v[hi]);
    }while(lo<hi);
    radix(low, hi, b-1);
    radix(lo, hig, b-1);
}