Mezcla dos vectores ordendos en un tercero
Algoritmo de mezcla de dos vectores ordenados
void mezcla( std::vector< int > a, std::vector< int > b, std::vector< int > c )
{
const int MAX = a.size() + b.size();
int i, j = 0;
/// i -> A = { 5, 7, 9 }
/// j -> B = { 4, 6, 11 }
while( c.size() <= MAX )
{
/// agrega al arreglo auxiliar el menor de los dos valores
c.push_back( a[ i ] > b[ j ] ? b[ j ] : a[ i ] );
/// esta parte controla el desplazamiento de los indices
/// para realizar el apareo de forma correcta
if( a[ i ] > b[ j ] )
{
if( j < b.size() )
{
j++;
}
else
while( i < MAX )
{
c.push_back( a.at( i ) );
i++;
}
}
else
{
if( i < a.size() )
{
i++;
}
else
while( j < MAX )
{
c.push_back( b.at( j ) );
j++;
}
}
}
}
Comentarios
Publicar un comentario