【发布时间】:2010-11-21 09:47:54
【问题描述】:
我有一种情况,我得到一个已经部分排序的值列表。我的最终列表中有 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 库也可以)。
虽然我不能轻易分解输入数据,但我当然可以确定子序列的开始位置。
【问题讨论】:
-
我相信对于链表,合并排序是为数不多的运行良好的算法之一。
-
list 我的意思是抽象的数据结构。此时它们实际上存储在
std::vector中。