Pagini recente » Cod sursa (job #2794567) | Cod sursa (job #1361250) | Cod sursa (job #1402634) | Cod sursa (job #278634) | Cod sursa (job #1053987)
#include<iostream>
#include<fstream>
#include<vector>
using namespace std;
int v[500000], n,nr;
ofstream g("algsort.out");
void urca(int poz)
{ while(poz>1 && v[poz]<v[poz/2])
{ swap(v[poz],v[poz/2]);
poz=poz/2;
}
}
void insert(int val)
{ nr++;
v[nr]=val;
urca(nr);
}
void coboara(int poz)
{int poz1;
while(poz*2+1<=n && (v[poz]>v[poz*2] || v[poz]>v[poz*2+1]))
{ poz1=poz*2;
if(v[poz1+1]<v[poz])
poz1+=1;
swap(v[poz],v[poz1]);
poz=poz1;
}
if(poz*2==n && v[poz*2]<v[poz])
swap(v[poz],v[poz*2]);
}
void heapsort()
{
g<<v[1]<<" ";
v[1]=v[n--];
coboara(1);
}
int main()
{int i,x, aux;
ifstream f("algsort.in");
f>>n;
for(i=1;i<=n;i++)
{
f>>x;
insert(x);
}
for(i=1;i<=n;i++)
heapsort();
f.close();
g.close();
}