SPlay Tree有什么作用?

booirror 2015-04-27 08:33:10
这种树是这样的:第一次查找某个值,时间复杂度可能是O(n),但是查找后,它会把这个值通过旋转操作放到树根下,因此,之后的查找就非常快了。

那么问题来了,我每次查找的值不一样,那不是白忙活吗?

这玩意有什么作用,那里应用了这个东东。
...全文
277 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
也就是信息学奥赛那帮人搞的东西,实际工作中肯定是白忙活的!!!!
ri_aje 2015-04-29
  • 打赏
  • 举报
回复
引用 5 楼 booirror 的回复:
[quote=引用 4 楼 ri_aje 的回复:] 你的应用要是经常出现每次查找内容不一样的情况,那就不要用 splay tree,因为它的特性你用不上,老老实实二叉查找树就行了,或者散列表;如果经常出现重复查找,就用 splay tree,因为会比其他二叉树快。要学会使用工具。人家说你抬杠也是这个意思,splay tree 在查找不重复的情况下就是没什么优势,你还问“那不是白忙活吗”?这不是废话吗,可不就是白忙活了。
大哥,你说的意思,我明白,但是想想现实吧,究竟有什么情况是连续查找相同数据的,有人说视频搜索,这个相邻查找中出现相同的概论,我觉得一点都不大。[/quote] 不用非得是连续查找相同的,只要是连续查找一个小集合,这些常用元素就都会集中到树根,加速查找。比如总是找张三李四王五中的某人,splay tree 就能把他们都调整到树根,不需要非得一直找张三。说实在,实践中我也没用过 splay tree,要是某位大神用过,倒是想听听实践经验。主要是这货和标准库有冲突,进不了标准很难大规模使用。
赵4老师 2015-04-28
  • 打赏
  • 举报
回复
凡事为抬杠而抬杠,意义就不那么大了。
booirror 2015-04-28
  • 打赏
  • 举报
回复
引用 4 楼 ri_aje 的回复:
你的应用要是经常出现每次查找内容不一样的情况,那就不要用 splay tree,因为它的特性你用不上,老老实实二叉查找树就行了,或者散列表;如果经常出现重复查找,就用 splay tree,因为会比其他二叉树快。要学会使用工具。人家说你抬杠也是这个意思,splay tree 在查找不重复的情况下就是没什么优势,你还问“那不是白忙活吗”?这不是废话吗,可不就是白忙活了。
大哥,你说的意思,我明白,但是想想现实吧,究竟有什么情况是连续查找相同数据的,有人说视频搜索,这个相邻查找中出现相同的概论,我觉得一点都不大。
ri_aje 2015-04-28
  • 打赏
  • 举报
回复
你的应用要是经常出现每次查找内容不一样的情况,那就不要用 splay tree,因为它的特性你用不上,老老实实二叉查找树就行了,或者散列表;如果经常出现重复查找,就用 splay tree,因为会比其他二叉树快。要学会使用工具。人家说你抬杠也是这个意思,splay tree 在查找不重复的情况下就是没什么优势,你还问“那不是白忙活吗”?这不是废话吗,可不就是白忙活了。
fly_dragon_fly 2015-04-28
  • 打赏
  • 举报
回复
就是查找用了。每次查找不同就是概率问题了,只要期望时间好就行
booirror 2015-04-28
  • 打赏
  • 举报
回复
引用 2 楼 zhao4zhong1 的回复:
凡事为抬杠而抬杠,意义就不那么大了。
没抬杠,这次查找和下次查找的内容不一样,这是很普遍的吧,或者你举个实际例子看看

64,691

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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