Per quanto ne so, inplace_merge fa esattamente la stessa cosa di ordinamento, tranne che funziona solo in determinate circostanze (quando il contenitore è già in due parti ordinate).STL di C++ :: qual è la differenza tra inplace_merge e ordinamento
In altre parole, v'è una differenza tra questi due:
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())
L'unica differenza sarà l'efficienza?
-1 La domanda è, è lo scenario che l'OP ha proposto il caso peggiore per uno degli algoritmi? Confrontare le complessità del caso peggiore non ha senso quando si considera uno scenario specifico. –
@ Space_c0wb0y non sono d'accordo, la domanda sembra essere più generale e in seguito utilizza lo scenario come esempio, che dice che le complessità non significano necessariamente inplace_merge non sarà mai più lento di sort, e questa risposta non considera la stabilità –
Grazie. L'unica altra cosa che sto mettendo in questa risposta è il fatto che inplace_merge è stabile, mentre sort (non stable_sort) è instabile nel modo in cui lo ordina. Ma a cosa avevi risposto la domanda. Dovrei aver letto completamente il "manuale" su cplusplus.com :) –