Pagini recente » Cod sursa (job #3002758) | Cod sursa (job #1226778) | Cod sursa (job #1095037) | Cod sursa (job #550829) | Cod sursa (job #2091535)
#include <fstream>
using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
int n, v[500001];
inline void swapy(int &a, int &b)
{
int aux = a;
a = b;
b = aux;
}
void Insert_Heap(int i)
{
int tata, fiu = i;
tata = fiu / 2;
while(tata > 0 && v[tata] < v[fiu])
{
swapy(v[tata], v[fiu]);
fiu = tata;
tata = fiu / 2;
}
}
void HeapSort(int i)
{
int tata, fiu;
swapy(v[1], v[i]);
tata = 1;
fiu = 2;
while(fiu < i)
{
if(fiu + 1 < i && v[fiu + 1] > v[fiu]) fiu++;
if(v[fiu] > v[tata])
{
swapy(v[fiu], v[tata]);
tata = fiu;
fiu = fiu * 2;
}
else fiu = i;
}
}
int main()
{
int i;
fin>>n;
for(i = 1; i <= n; ++i)
fin>>v[i];
for(i = 2; i <= n; ++i)
Insert_Heap(i);
for(i = n; i > 1; --i)
HeapSort(i);
for(i = 1; i <= n; ++i) fout<<v[i]<<' ';
return 0;
}