Gostaria de saber como fica a ordenação HeapSort que está em C++ em visualg, pois sou iniciante e estou aprendendo visualg, obrigado pela atençao
template<class T>
void heap_sort( std::vector<T> &lista )
{
int tam = static_cast<int>( lista.size() ), i;
for( i = tam/2 - 1; i >= 0; --i )
{
maxHeapify(lista, i , tam );
}
std::vector<T>::reverse_iterator elem;
for( elem = lista.rbegin(); elem != lista.rend(); elem++ )
{
std::iter_swap( elem, lista.begin() );
maxHeapify( lista, 0, --tam );
}
}
template<class T>
void maxHeapify( std::vector<T> &lista, const int pos, const int n )
{
int max = 2 * pos + 1;
if( max < n )
{
if( (max+1) < n && lista.at(max) < lista.at(max+1) )
{
++max;
}
if( lista.at(max) > lista.at(pos) )
{
std::swap( lista[max], lista[pos] );
maxHeapify( lista, max, n );
}
}
}