Pagini recente » Cod sursa (job #1924854) | Cod sursa (job #1365885) | Cod sursa (job #947406) | Cod sursa (job #52658) | Cod sursa (job #1042484)
#include <fstream>
using namespace std;
ifstream cin("algsort.in");
ofstream cout("algsort.out");
int n, v[1000001], s[1000001], i, m, k;
void push(int i)
{
while(v[i/2]>v[i] && i>1)
{
swap(v[i/2], v[i]);
i/=2;
}
}
void minim(int i, int &j, int &x)
{
if(v[2*i]<=v[2*i+1])
{
j=2*i;
x=v[j];
}
else
{
j=2*i+1;
x=v[j];
}
}
void pop(int m)
{
int i, j, x;
s[++k]=v[1];
v[1]=v[m];
i=1;
minim(i, j, x);
while(i<m && j<m && v[i]>x)
{
swap(v[i],v[j]);
i=j;
minim(i, j, x);
}
}
int main()
{
cin>>n;
for(i=1; i<=n; i++)
{
cin>>v[i];
push(i);
}
for(m=n; m>0; m--) pop(m);
for(i=1; i<=n; i++) cout<<s[i]<<" ";
return 0;
}