У меня есть ситуация, когда я получаю список значений, которые уже частично отсортированы. В моем окончательном списке N блоков, каждый блок отсортирован. Таким образом, я получаю список данных вроде этого (косые черты просто для акцента):
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
У меня они есть в векторе как серия указателей на объекты. В настоящее время я просто использую std::sort
с пользовательским компаратором для сортировки. Я предполагаю, что это неоптимально, так как моя последовательность - некоторый вырожденный случай.
Существуют ли какие-либо другие функции, подсказки или иные методы stl, которые я мог бы использовать для обеспечения оптимального вида таких данных? (Библиотеки Boost тоже хороши).
Хотя я не могу легко разбить входные данные, я определенно могу определить, где начинаются подпоследовательности.