What do you think about this code?
#include <iostream>
using std::cout;
using std::endl;
#include <vector>
using std::vector;
#include <ctime>
#include <cstdlib>
template < typename T >
vector < T > concatenate( vector < T > _a_, T piv, vector < T > _b_ )
{
vector < T > v_list;
v_list.insert( v_list.begin(), _a_.begin(), _a_.end() );
v_list.push_back( piv );
v_list.insert( v_list.end(), _b_.begin(), _b_.end() );
return v_list;
}
template < typename T >
vector< T > quick( vector< T > vec )
{
vector< T > v_less, v_greater, v_list;
vector< T > aux1, aux2;
typename vector < T >::const_iterator iter_Const;
if( vec.size() <= 1 )
return vec;
int piv = *(vec.end() - 1);
vec.pop_back();
for( iter_Const = vec.begin(); iter_Const != vec.end(); ++iter_Const )
{
if( *iter_Const < piv )
v_less.push_back( *iter_Const );
else
v_greater.push_back( *iter_Const );
}
return concatenate( quick( v_less ), piv, quick( v_greater ) );
}
int main() {
vector < int > lista;
srand( 1 );
cout << "VECTOR" << endl;
for( int i = 0; i < 10000; i++ )
{
lista.push_back( rand() % 100 );
cout << lista[i] << " | ";
}
cout << endl;
cout << "******" << endl;
cout << "QUICKSORT" << endl;
lista = quick( lista );
vector < int > :: const_iterator it;
for( it = lista.begin(); it != lista.end(); ++it )
cout << *it << " | ";
cout << endl;
}