qSort 中的 qSwap

蜡笔小新啦 2013-03-07 01:51:20
请教个问题。
我在用qSort的时候,由于对象可能很大。
我看qSort源码qSwap
RandomAccessIterator low = start, high = end - 1;
RandomAccessIterator pivot = start + span / 2;
qSwap(*pivot, *end);


我想这样交换性能如何?是交换的是实际数据还是地址而已?
...全文
249 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
蜡笔小新啦 2013-03-10
  • 打赏
  • 举报
回复
我知道肯定指针快。但是不知道为什么qt凭什么说qSwap对于大的对象速度非常快。
dext 2013-03-07
  • 打赏
  • 举报
回复
两点:
第一,Big O 的标记 只是 算法理论上的衡量标尺,并不是 实际中CPU的指令条数。如果真要划等号的话。 一次数据的移动 可以认为为 O(1) 因为 不会随着问题的规模而扩张。

第二,没有人强迫你去移动数据 还是 指针。
在我看来,移动指针 是利大于弊的。
蜡笔小新啦 2013-03-07
  • 打赏
  • 举报
回复
qt的swap源码。 template <typename T> inline void qSwap(T &value1, T &value2) { const T t = value1; value1 = value2; value2 = t; } qt文档又说:The sort algorithm is efficient on large data sets. It operates in linear-logarithmic time, O(n log n). 这样移动大的对象还是很影响效率的吧

16,214

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧