Mam sytuację, w której otrzymuję listę wartości, które są już częściowo posortowane. Na mojej liście końcowej znajduje się N bloków, każdy blok jest posortowany. Więc w końcu o listę danych, takich jak ten (ukośniki są tylko dla podkreślenia):Efektywny sposób sortowania konkatenacji list (STL), scalania wskazówek sortowania, częściowego sortowania
1 2 3 4 5 6 7 8/1 2 3 4 5/2 3 4 5 6 7 8 9/1 2 3 4
mam je w wektorze jako serię wskaźników do obiektów. Obecnie używam tylko std::sort
z niestandardowym komparatorem do sortowania. Sądzę, że jest to nieoptymalne, ponieważ moja sekwencja jest zdegenerowana.
Czy są jakieś inne funkcje standardowe, wskazówki lub inne, które mogłem użyć, aby zapewnić optymalny rodzaj takich danych? (Biblioteki doładowania również są w porządku).
Chociaż nie mogę łatwo zepsuć danych wejściowych, z pewnością mogę określić, gdzie zaczynają się pod-sekwencje.
Wierzę, że dla list połączonych sortowanie scalone jest jednym z niewielu algorytmów, które działają dobrze. –
Przez * listę * miałem na myśli tylko abstrakcyjną strukturę danych. W rzeczywistości są one przechowywane w 'std :: vector'. –