Pagini recente » Cod sursa (job #332602) | Cod sursa (job #2177722) | Cod sursa (job #53826) | Cod sursa (job #1766707) | Cod sursa (job #751695)
Cod sursa(job #751695)
#include <fstream>
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
int V[500010], N, i,aux;
void insert(int i) {
int p,c,aux;
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 = p/2;
}
}
int corect(int i) {
int c, p, aux;
p = 1;
c = 2*p;
while (c <= i) {
if (c+1 <= i && 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*c;
}
}
int main() {
f>>N;
for (i=1;i<=N;i++) {
f>>V[i] ;
insert(i); //consider deja heap cu i-1 elemente si inserez pe v[i]
}
for (i=N;i>=2;i--) {
aux = V[1];
V[1] = V[i];
V[i] = aux;
corect(i-1); //cu cele i-1 elemente am heap stricat doar de v[1]
}
for (i=1;i<=N;i++)
g<<V[i]<<" ";
g.close();
f.close();
}