tl;dr: 能否在一份双倍链接的清单上迅速执行? 在思考之前,我的理解是,它不是。
另一天,我有机会审议基本分类算法的代用要求。 基本的O(N2)系统相当简单。
- Bubble sort - 2 forward iterators will do nicely, one dragging after the other.
- Insertion sort - 2 bidirectional iterators will do. One for the out-of-order element, one for the insertion point.
- Selection sort - A little bit trickier but forward iterators can do the trick.
<><>质量>
st:ort(如核心标准图书馆/单版)/硅图(1996年)要求随机进入。
__introsort_loop(_RandomAccessIterator __first,
_RandomAccessIterator __last,
_Size __depth_limit, _Compare __comp)
正如我所期望的那样。
更仔细的检查 我找不到要求这样做的真正原因。 唯一明确要求随机抽取的用户是<代码>d:__median,要求计算中间要素。 普通面包车速does not计算中值。
分割包括检查
if (!(__first < __last))
return __first;
对双向检查并不真正有用。 然而,人们应当能够用先前的分班旅行(从左边到右边/左边)的简单条件来取代这种旅行。
if ( __first == __last ) this_partitioning_is_done = true;
只有双向导师才能公平有效地实施快速通航? 宽度仍然可以保持。
NB. 我尚未尝试实际执行。