Pagini recente » Cod sursa (job #3202476) | Cod sursa (job #527255) | Cod sursa (job #1030491) | Cod sursa (job #1017648) | Cod sursa (job #1059616)
#include<fstream>
#include<cmath>
#define numaru 5000000
#define nrmare (1<<30)-1
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
int v[numaru],bb[2500][2],l,nrz,n;
void citeste()
{
int i;
f>>n;
l=sqrt(n);
nrz=n/l;
for(i=0;i<nrz;++i) { bb[i][0]=nrmare; bb[i][1]=i*l; }
for(i=0;i<n;++i)
{
f>>v[i];
if(v[i]<bb[i/l][0])
{
bb[i/l][0]=v[i];
bb[i/l][1]=i;
}
}
}
void operatiunea_sortarea()
{
int i,_min,_minpoz,j;
for(j=0;j<n;++j)
{
_min=nrmare;
for(i=0;i<nrz;++i)
if(_min>bb[i][0])
{
_min=bb[i][0];
_minpoz=i;
}
g<<_min<<" ";
v[bb[_minpoz][1]]=nrmare;
bb[_minpoz][0]=nrmare;
for(i=bb[_minpoz][1]/l*l;i<(bb[_minpoz][1]/l+1)*l;++i)
{
if(v[i]<bb[_minpoz][0])
{
bb[_minpoz][0]=v[i];
bb[_minpoz][1]=i;
}
}
}
}
int main()
{
citeste();
operatiunea_sortarea();
f.close();
g.close();
return 0;
}