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
Y felices fiestas