Pagini recente » Cod sursa (job #2922243) | Cod sursa (job #2220081) | Cod sursa (job #1822308) | Cod sursa (job #2396727) | Cod sursa (job #1221099)
#include <fstream>
#define DIM 500010
using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
int v[DIM], n, i, c, p;
void swap(int &a, int &b) {
int aux = a;
a = b;
b = aux;
}
int main() {
fin>>n;
for (i=1;i<=n;i++) {
fin>>v[i];
c = i;
p = i/2;
while (p >= 1) {
if (v[c] > v[p]) {
swap(v[c], v[p]);
c = p;
p = p/2;
} else
break;
}
}
for (i=n;i>=2;i--) {
swap(v[1], v[i]);
p = 1;
c = 2;// corectez heapul cu i-1 elemente
while (c <= i-1) {
if (c+1 <= i-1 && v[c+1] > v[c])
c++;
if (v[p] < v[c]) {
swap(v[p], v[c]);
p = c;
c = 2*p;
} else
break;
}
}
for (i=1;i<=n;i++)
fout<<v[i]<<" ";
}