Tengo que implementar el metodo de ordenamiento Quicksort utilizando templates, esto es, que soporte cualquier tipo de datos a ordenar, pero que los datos esten en un vector de la Standard Template Library
Algo asi seria el encabezado:
template <class Tipo> void QuickSort(std::vector<Tipo>& vec, std::vector<Tipo>::iterator low,
std::vector<Tipo>::iterator high)
Ya que estoy meto todo el codigo. Hay algo que me parece que no esta bien y no se que es (yo lo uso para un tipo de datos mio que tiene sobrecargado los operadores "<", ">" y el "==" y se que estan bien sobrecargados entonces no se cual es el prblema de mi programa)
Ahi va el codigo
#include <vector>
template <class Tipo> std::vector<Tipo>::iterator Partition(std::vector<Tipo>& vec, std::vector<Tipo>::iterator left /*low*/,
std::vector<Tipo>::iterator right/*high*/)
{
// std::vector<Tipo>::iterator left, right;
Tipo pivot_item, aux;
// std::vector<Tipo>::iterator pivot = left = low;
//pivot_item = *low;
pivot_item = *left;
// right = high;
while ( left < right )
{
while ( **left < *pivot_item )
left++;
while ( **right > *pivot_item)
right--;
if ( left < right )
{
if (**left > **right)
{
aux = *left;
*left = *right;
*right = aux;
}
else
{
++left;
--right;
}
}
}
//*left = *right;
//*right = pivot_item;
return right;
}
template <class Tipo> void QuickSort(std::vector<Tipo>& vec, std::vector<Tipo>::iterator low,
std::vector<Tipo>::iterator high)
{
std::vector<Tipo>::iterator pivot;
if ( high > low )
{
pivot = Partition(vec, low, high);
QuickSort(vec, low, pivot - 1);
QuickSort(vec, pivot + 1, high);
}
}
Hay comentarios que no he eliminado, les pido disculpas porque no es lindo para leer.
Espero que con esta aclaracion alguien me pueda ayudar.