Pagini recente » Cod sursa (job #1502438) | Cod sursa (job #2558790) | Cod sursa (job #2741311) | Cod sursa (job #1660276) | Cod sursa (job #978896)
Cod sursa(job #978896)
#include <fstream>
using namespace std;
int v[500010], i, n, p, c, aux;
int main () {
ifstream fin("algsort.in");
ofstream fout("algsort.out");
fin>>n>>v[1];
for (i=2;i<=n;i++) {
fin>>v[i];
//urc pe v[i] in heapul cu i-1 elemente existent deja
c = i;
p = i/2;
while (p > 0) {
if (v[c] > v[p]) {
aux = v[c];
v[c] = v[p];
v[p] = aux;
} else
break;
c = p;
p = p/2;
}
}
for (i=n;i>=2;i--) {
aux = v[1];
v[1] = v[i];
v[i] = aux;
// corectez un heap cu i-1 noduri cu vf nepotrivit
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;
}
p = c;
c = 2*c;
}
}
for (i=1;i<=n;i++)
fout<<v[i]<<" ";
return 0;
}