Pagini recente » Cod sursa (job #295069) | Cod sursa (job #2508640) | Cod sursa (job #2340943) | Cod sursa (job #3282495) | Cod sursa (job #1811814)
#include <fstream>
using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
int v[500010],n;
void radix(int Lo, int Hi, int bit)
{
if(Lo>=Hi || bit==0)return;
int lo=Lo, hi=Hi;
do
{
while(lo<=hi && ((v[lo]&bit)==0))lo++;
while(lo<=hi && ((v[hi]&bit)==bit))hi--;
if(lo<hi)
{
swap(v[lo],v[hi]);
lo++;hi--;
}
}while(lo<=hi);
if(hi>=Lo)radix(Lo,hi,bit>>1);
if(lo<=Hi)radix(lo,Hi,bit>>1);
}
int main()
{
fin>>n;
for(int i=1; i<=n; i++)
fin>>v[i];
radix(1,n,1<<30);
for(int i=1;i<=n;i++)
fout<<v[i]<<' ';
return 0;
}