请教个问题。
我在用qSort的时候,由于对象可能很大。
我看qSort源码qSwap
RandomAccessIterator low = start, high = end - 1;
RandomAccessIterator pivot = start + span / 2;
qSwap(*pivot, *end);
我想这样交换性能如何?是交换的是实际数据还是地址而已?
------解决方案--------------------
两点:
第一,Big O 的标记 只是 算法理论上的衡量标尺,并不是 实际中CPU的指令条数。如果真要划等号的话。 一次数据的移动 可以认为为 O(1) 因为 不会随着问题的规模而扩张。
第二,没有人强迫你去移动数据 还是 指针。
在我看来,移动指针 是利大于弊的。