Sortowanie przez kopcowanie
From Nasza Pasja - Programowanie
(Przekierowano z Heapsort)
[edytuj]
Implementacja w C++
Program pobiera dane ze standardowego wejścia i wypisuje je na standardowe wyjście.
Pierwszą liczbą na wejściu powinna być liczba dancyh do posortowania. Następnie liczby które mają być posortowane.
Przykład
Dla wejścia:
4 43554 3 5453 545
Program zwróci:
3 545 5453 43554
Kod źródłowy
// Autor: Kacper Ciesla (comboy)
// Licencja: Rob z tym co chcesz, notke o autorze tez mozesz usunac
#include <iostream>
using namespace std;
int tab[101];
int rozmiar;
void heapify(int n)
{
int lewy = n*2;
int prawy = n*2+1;
int max=n;
if (lewy<=rozmiar && tab[lewy]>tab[max])
max = lewy;
if (prawy<=rozmiar && tab[prawy]>tab[max])
max = prawy;
if (max!=n)
{
int temp;
temp = tab[n];
tab[n] = tab[max];
tab[max] = temp;
heapify(max);
}
}
int main()
{
int n;
cin >> n;
rozmiar = n;
for (int i=1; i<=n; i++)
{
cin >> tab[i];
}
for (int i=n/2; i>0; i--)
{
heapify(i);
}
for (int i=1; i<=n; i++)
{
int temp;
temp = tab[1];
tab[1] = tab[rozmiar];
tab[rozmiar] = temp;
rozmiar--;
heapify(1);
}
for (int i=1; i<=n; i++)
{
cout << tab[i] << endl;
}
}

