Pagini recente » Cod sursa (job #954283) | Cod sursa (job #2506011) | Cod sursa (job #2166820) | Cod sursa (job #2955510) | Cod sursa (job #1310309)
#include <fstream>
#include <iostream>
using namespace std;
int n, i, v[500010], c, p;
int main() {
ifstream fin ("algsort.in");
ofstream fout("algsort.out");
fin>>n;
for (i=1;i<=n;i++)
fin>>v[i];
for (i=2;i<=n;i++) {
c = i;
p = i/2;
while (p != 0) {
if (v[c] > v[p])
swap(v[c], v[p]);
else
break;
c = p;
p = p/2;
}
}
for (i=n;i>=2;i--) {
swap(v[1], v[i]);
p = 1;
c = 2;
while (c <= i-1) {
if (c+1 <= i-1 && v[c+1] > v[c])
c++;
if (v[c] > v[p]) {
swap(v[c], v[p]);
} else
break;
p = c;
c = 2*c;
}
}
for (i=1;i<=n;i++)
fout<<v[i]<<" ";
return 0;
}