Pagini recente » Cod sursa (job #43705) | Cod sursa (job #452843) | Cod sursa (job #1074773) | Cod sursa (job #782318) | Cod sursa (job #1053993)
#include<iostream>
#include<fstream>
#include<vector>
using namespace std;
int v[500001],nr;
ofstream g("algsort.out");
void urca(int poz)
{ while(poz>1 && v[poz]<v[poz/2])
{ swap(v[poz],v[poz/2]);
poz/=2;
}
}
void insert(int val)
{ nr++;
v[nr]=val;
urca(nr);
}
void coboara(int poz)
{int poz1;
while(poz*2+1<=nr && (v[poz]>v[poz*2] || v[poz]>v[poz*2+1]))
{ poz1=poz*2;
if(v[poz1+1]<v[poz1])
poz1+=1;
swap(v[poz],v[poz1]);
poz=poz1;
}
if(poz*2==nr && v[poz*2]<v[poz])
swap(v[poz],v[poz*2]);
}
void heapsort()
{
g<<v[1]<<" ";
v[1]=v[nr--];
coboara(1);
}
int main()
{int i,x, aux,n;
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();
}