Pagini recente » Cod sursa (job #2934205) | Cod sursa (job #1142531) | Cod sursa (job #1861182) | Cod sursa (job #2565953) | Cod sursa (job #2705166)
#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 nod=1;
int copil=2;
while (2*nod+1<=i-1&&(a[nod]<a[nod*2]||a[nod]<a[nod*2+1])) {
if (a[2*nod]>a[2*nod+1]) {
swap(a[nod],a[2*nod]);
nod*=2;
}
else {
swap(a[nod],a[2*nod+1]);
nod=nod*2+1;
}
}
}
for (i=1;i<=n;i++) {
fout<<a[i]<<" ";
}
return 0;
}