Skip to content

Merge de 2 vectores

MatiPalermo99 edited this page Oct 9, 2019 · 1 revision

Problema: dados 2 vectores de N1 y N2 elementos, no necesariamente de la misma longitud, se quiere obtener un 3er vector ordenado compuesto por los elementos de los otros 2 vectores.

Ejemplos:

  1. Si V1[ ] = {1, 7, 5, 3, 11, 13, 9}; N1 = 7;

Si V2[ ] = {2, 6, 4, 10, 12, 8}; N2 = 6;

Salida: {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13};

  1. Si V1[ ] = {1, 7, 5} ; N1 = 3;

Si V2[ ] = {2, 8, 4, 11, 12, 15}; N2 = 7;

Salida: {1, 2, 3, 4, 5, 7, 8, 11, 12, 15};

Idea del algoritmo:

Luego de ordenar los 2 vectores que recibimos, debemos crear un 3er vector con una longitud igual a la suma de los otros 2. Después recorreremos los vectores paralelamente buscando el menor elemento para luego insertarlo en el nuevo vector. Al estar ordenados, este procedimiento se simplifica ya que los elementos menores estarán en las primeras posiciones, luego, solo deberemos comparar cual es el menor antes de insertarlo. Si los vectores recibidos fueran de tamaños distintos, luego de recorrer por completo el menor, habiendo insertado ya sus elementos en el nuevo, es posible encolar lo restante del vector mas largo dado que ambos estan ordenados.

Código

Disponible en Enciclopedia Algoritmos C++

Ejemplo de uso

Disponible en ejemplo merge de vectores

Clone this wiki locally