Pagini recente » Cod sursa (job #2637895) | Cod sursa (job #2059215) | Cod sursa (job #2722546) | Cod sursa (job #581133) | Cod sursa (job #2740998)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
int n;
vector<int>a;
void Coboara(int poz)
{
if(poz * 2 + 1 >= a.size())
return;
if((poz * 2 + 2 == a.size()) || (a[poz * 2 + 1] > a[poz * 2 + 2]))
{
if(a[poz * 2 + 1] > a[poz])
{
swap(a[poz], a[poz * 2 + 1]);
Coboara(poz * 2 + 1);
return;
}
else return;
}
else
{
if(a[poz * 2 + 2] > a[poz])
{
swap(a[poz], a[poz * 2 + 2]);
Coboara(poz * 2 + 2);
return;
}
else return;
}
}
void HeapSort()
{
int i;
for(i = n - 1; i >= 0; i--)
{
swap(a[0], a[i]);
a.pop_back();
Coboara(0);
}
for(i = 0; i < n; i++)
fout << a[i] << " ";
fout << "\n";
}
void Heapify()
{
int i, x;
fin >> n;
for(i = 0; i < n; i++)
{
fin >> x;
a.push_back(x);
}
for(i = a.size() / 2; i >= 0; i--)
Coboara(i);
}
int main()
{
Heapify();
HeapSort();
fin.close();
fout.close();
return 0;
}