Pagini recente » Cod sursa (job #2836163) | Cod sursa (job #299762) | Cod sursa (job #2568337) | Cod sursa (job #2279492) | Cod sursa (job #1385063)
#include <fstream>
#include <cstdio>
#include <algorithm>
using namespace std;
int n,i,v[500010];
ofstream g ("algsort.out");
void hip(int i){
int fs,fd;
if(i*2<=n)fs=v[i*2];
if(i*2+1<=n)fd=v[i*2+1];
if(v[i]<fs)swap(v[i],v[i*2]);
else
if(v[i]<fd)swap(v[i],v[i*2+1]);}
void hipp(int n){
swap(v[1],v[n]);
n--;
for(i=1;i<=n/2;i++){
if(v[i]<v[i*2]&&i*2<=n)swap(v[i],v[i*2]);
if(v[i]<v[i*2+1]&&i*2+1<=n)swap(v[i],v[i*2+1]);}
if(n>1) hipp(n);}
int main(){
freopen("algsort.in","r",stdin);
scanf("%d",&n);
for(i=1;i<=n;i++)
scanf("%d",&v[i]);
for(i=1;i<=n/2;i++)
hip(i);
hipp(n);
for(i=1;i<=n;i++)
g<<v[i]<<" ";
return 0;}