我有一个数字列表L
(在一般意义上,不是std::list
),我也有i
它是 中最小元素的索引L
。我想交换由 index 分隔的两个分区i
。我应该执行什么标准数据结构和什么操作才能尽可能高效地执行此操作(最好是在恒定时间内)?
L
一个例子:让9 6 -4 6 12
。最小值是L[2] = -4
,所以i = 2
。交换两个分区后,我想L
成为-4 6 12 9 6
.
该列表将非常大(最多 10 3 个元素),我还必须多次遍历它(在最坏的情况下最多 10 3 次遍历),因此由于缓存问题,使用不是std::list
一个好主意。另一方面,std::vector
会使两个分区的交换变得困难。这是std::deque
一个不错的选择吗?