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