Pagini recente » Cod sursa (job #571128) | Cod sursa (job #1836643) | Cod sursa (job #488573) | Cod sursa (job #1853836) | Cod sursa (job #1787975)
#include <fstream>
using namespace std;
int n, c, i, p, aux;
int v[500005];
int main() {
ifstream fin("algsort.in");
ofstream fout("algsort.out");
fin >> n;
for (i = 1; i <= n; i++) {
fin >> v[i];
c = i; p = i / 2;
while (p > 0 && v[c] > v[p]) {
aux = v[c];
v[c] = v[p];
v[p] = aux;
c = p;
p /= 2;
}
}
for (i = n; i >= 2; i--) {
aux = v[i];
v[i] = v[1];
v[1] = aux;
p = 1;
c = 2 * p;
while (c <= i - 1) {
if (c + 1 <= i - 1 && v[c + 1] > v[c])
c++;
if (v[p] < v[c]) {
aux = v[p];
v[p] = v[c];
v[c] = aux;
}
else
break;
p = c;
c = 2 * p;
}
}
for (i = 1; i <= n; i++)
fout << v[i] << " ";
return 0;
}