Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: AlucardDracula en 25 Diciembre 2013, 18:03 pm



Título: Unir dos vectores y ordenarlos
Publicado por: AlucardDracula en 25 Diciembre 2013, 18:03 pm
Se que es algo bastante sencillo pero no acabo de entenderlo del todo, si por ejemplo tengo:

Código:
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.

Código:
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 :

Código:
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


Título: Re: Unir dos vectores y ordenarlos
Publicado por: AlucardDracula en 25 Diciembre 2013, 18:31 pm
Problema solucionado, ¿Como puedo borrar el post?


Título: Re: Unir dos vectores y ordenarlos
Publicado por: ivancea96 en 25 Diciembre 2013, 19:21 pm
Puedes postear tu solución, así queda para los demás ;)