Unir dos vectores y ordenarlos

Iniciado por AlucardDracula, 25 Diciembre 2013, 18:03 PM

0 Miembros y 1 Visitante están viendo este tema.

AlucardDracula

Se que es algo bastante sencillo pero no acabo de entenderlo del todo, si por ejemplo tengo:


Vector a = 2,3,5
Vector b = 3,5,5,7

Busco:
Vector c = 2,3,3,5,5,7


El problema que tengo es que no se como adaptar bien mi codigo del mergesort para que funcione recibiendo 2 vectores y los una y no recibiendo un solo vector y luego ordenarlo.


Función del merge sort:

// Pre: 0<=e<=m<=d<v.size() y v[e..m] y v[m+1..d], por separado, están ordenados crecientemente
// Post:los elementos de v[e..d] son los iniciales, pero ordenados crecientemente
//      y el resto de v no se ha modificado.
// m es una posición intermedia, m = (e+d)/2
void fusiona(vector<double>& v, int e, int m, int d) {
    int n = d - e + 1;
    vector<double> aux(n);
    int i = e;
    int j = m + 1;
    int k = 0;
   
    while (i <= m and j <= d) {
        if (v[i] <= v[j]) {
            aux[k] = v[i];
            ++i;
        }
        else {
            aux[k] = v[j];
            ++j;
        }
        ++k;
    }
    while (i <= m) {
        aux[k] = v[i];
        ++k;
        ++i;
    }
    while (j <= d) {
        aux[k] = v[j];
        ++k;
        ++j;
    }
    for (k = 0; k < n; ++k) v[k + e] = aux[k];
}


Y esta seria la  nueva funcion :


vector<double> fusion(const vector<double>& v1, const vector<double>& v2)


Parecere idiota pero me estoy haciendo muchos lios para adaptarlo, alguna idea  :huh:

Y felices fiestas  ;D

AlucardDracula

#1
Problema solucionado, ¿Como puedo borrar el post?

ivancea96

Puedes postear tu solución, así queda para los demás ;)