我正在尝试将我的快速排序算法实现转换为一个模板,以便可以与除向量之外的其他容器一起使用。
最初,我使用索引来找到中间索引,例如(first + last) / 2
。如何在两个迭代器中找到中间位置呢?
我正在尝试将我的快速排序算法实现转换为一个模板,以便可以与除向量之外的其他容器一起使用。
最初,我使用索引来找到中间索引,例如(first + last) / 2
。如何在两个迭代器中找到中间位置呢?
std::sort
特别要求随机访问迭代器也是有原因的。 - Nicol Bolas这样怎么样?
bool isMovingFirst = true;
while(first != last) {
if(isMovingFirst) {
++first;
} else {
--last;
}
isMovingFirst = !isMovingFirst;
}
要找到中间迭代器,您应该使用:
first + (last - first) / 2