Pagini recente » Cod sursa (job #2204206) | Cod sursa (job #3124110) | Cod sursa (job #949245) | Cod sursa (job #48283) | Cod sursa (job #2705167)
#include <fstream>
#define dim 500010
using namespace std;
int a[dim];
int i,n,nod;
int main() {
ifstream fin("algsort.in");
ofstream fout("algsort.out");
fin>>n;
for (i=1;i<=n;i++) {
fin>>a[i];
}
for (i=2;i<=n;i++) {
int nod=i;
while (nod!=1&&a[nod/2]<a[nod]) {
swap (a[i/2],a[i]);
nod=nod/2;
}
}
for (i=n;i>=2;i--) {
swap (a[i],a[1]);
int p=1;
int c=2;
while (c<=i-1) {
///punem in c fiul cu care trebuie sa dam swap
if (c+1<=i-1&&a[c+1]>a[c]) { ///daca exista fiul din dreapta
c++;
}
if (a[p]<a[c]) swap(a[p],a[c]);
p=c;
c=p*2;
}
}
for (i=1;i<=n;i++) {
fout<<a[i]<<" ";
}
return 0;
}