Cod sursa(job #1039855)
Utilizator | Data | 23 noiembrie 2013 17:36:38 | |
---|---|---|---|
Problema | Sortare prin comparare | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.95 kb |
#include <fstream>
using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
int n,i,j,k,*v;
void heapsort()
{
for(i=0;i<n;++i)
for(j=i;j && v[j]>v[j/2];j>>=1)
swap(v[j],v[j/2]);
while(i)
{
j=0;
swap(v[0],v[i-1]);
while(j<(i-1)/2)
{
if(v[2*j]>v[2*j+1])
if(v[j]<v[2*j])
{
swap(v[j],v[2*j]);
j<<=1;
}
else
break;
else
if(v[j]<v[2*j+1])
{
swap(v[j],v[2*j+1]);
j=j*2+1;
}
else
break;
}
i--;
}
}
int main()
{
fin>>n;
v=new int[n];
for(i=0;i<n;++i)
fin>>v[i];
heapsort();
for(i=0;i<n;++i)
fout<<v[i]<<" ";
}