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

Entradas populares de este blog

El juego del ahorcado, escrito en assembler i8086

Una posible implementacion en modo texto de una sopa de letras con python ( 2013 )

ayuda memoria sobre conversion dinamica descendente y polimorfismo