Pagini recente » Cod sursa (job #2960323) | Cod sursa (job #2775804) | Cod sursa (job #2765979) | Cod sursa (job #1178549) | Cod sursa (job #1267945)
#include <iostream>
#include<fstream>
#include<math.h>
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
int minim(int m[],int p,int l)
{
int ok=0;
int mini=pow(2,31)-2;
for(int i=p; i<=l; i++)
if(m[i]<=mini && m[i]>=0)
{
mini=m[i];
ok=1;
}
if(ok)
return mini;
return -1;
}
int main()
{
int n,rn,poz,r,i,aux,j,k;
int mini=pow(2,31)-2;
f>>n;
rn=sqrt(n);
r=n/rn+1;
int m[n],v[r];
for(i=0; i<n; i++)
{
f>>m[i];
if((i+1)%rn==0)
v[i/rn]=minim(m,i+1-rn,i);
}
if(n%rn)
v[r-1]=minim(m,n- n%rn,n-1);
else
v[r-1]=-1;
for(k=0;k<n;k++)
{
mini=pow(2,31)-2;
for(i=0; i<r; i++)
if(v[i]<mini && v[i]>=0)
{
mini=v[i];
poz=i;
}
g<<mini<<" ";
for(j=rn*poz; j<rn*(poz+1) && j<n ; j++)
if(m[j]==mini)
{
m[j]=-1;
j=n;
}
if(poz!=r-1)
v[poz]=minim(m,rn*poz,rn*(poz+1)-1);
else
v[poz]=minim(m,rn*poz,n-1);
}
return 0;
}