Por lo que puedo decir, inplace_merge hace exactamente lo mismo que ordenar, excepto que solo funciona en ciertas circunstancias (cuando el contenedor ya está en dos partes ordenadas).C++ STL :: ¿cuál es la diferencia entre inplace_merge y sort
En otras palabras, ¿hay una diferencia entre estos dos:
int first[] = {1,3,5,7};
int second[] = {2,4,6,8};
vector<int> v(8);
vector<int>::iterator it;
copy(first,first+4, v.begin());
copy(second,second+4, v.begin()+4);
inplace_merge(v.begin(), v.begin()+4, v.end())
.
int first[] = {1,3,5,7};
int second[] = {2,4,6,8};
vector<int> v(8);
vector<int>::iterator it;
copy(first,first+4, v.begin());
copy(second,second+4, v.begin()+4);
sort(v.begin(), v.end())
¿La única diferencia será la eficiencia?
-1 La pregunta es, ¿el escenario propuesto por OP es el peor caso para cualquiera de los algoritmos? Comparar las complejidades del peor caso no tiene sentido cuando se considera un escenario específico. –
@ Space_c0wb0y no está de acuerdo, la pregunta parece ser más general y luego utiliza el escenario como ejemplo, que dice que las complejidades no necesariamente significan que inplace_merge nunca será más lento que el ordenamiento, y esta respuesta no considera la estabilidad –
Gracias. La única otra cosa que estoy poniendo en esta respuesta es el hecho de que inplace_merge es estable, mientras que sort (no stable_sort) es inestable en la forma en que ordena. Pero lo que has respondido a la pregunta. Debería haber leído completamente el "manual" en cplusplus.com :) –