免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: 我要思考
打印 上一主题 下一主题

[算法] 请问有没有快速定位list 节点的算法 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2011-02-16 13:51 |只看该作者
用数组也麻烦.比如删除
array[0] = 1
array[1] = 2
array[2] = 3
array[3] = 4
array[4] = 5

我把array[2]的值删了. 下面的 array[3]、array[4] 也跟着换位置

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
12 [报告]
发表于 2011-02-16 13:59 |只看该作者
像list RANGE 取范围的操作。 如果列表有100w个节点数据,取list范的围,这个高效一点应该怎么做。
这个li ...
我要思考 发表于 2011-02-16 13:31



    像我在开始时候写的那样做

论坛徽章:
0
13 [报告]
发表于 2011-02-16 14:14 |只看该作者
直接遍历做的?

论坛徽章:
0
14 [报告]
发表于 2011-02-16 15:14 |只看该作者
跳跃表也可以~

论坛徽章:
0
15 [报告]
发表于 2011-02-16 15:25 |只看该作者
没有一个数据结构是万能的,优化这方面,自然要在另一方面付出代价,要综合评估

如果说只是定位10w这一个需求,那么另外加一个指针专门指向10w这个位置,链表增删时按需调整这个指针就是了,如果这个操作很少,说不定到时从头遍历的开销还少于平常调整这个指针的开销

如果要定位很多地方,而且还要很频繁定位,那么用数组说不定开销还小,付出一些数组增删时候的代码,只要增删不频繁就好,

所以关键还是看应用场合

论坛徽章:
0
16 [报告]
发表于 2011-02-17 09:30 |只看该作者
同意楼上。优化是根据具体环境而定的。

同时像有这么多的数据,又要频繁的定位数据,用一个单链表是不够的。
用rbtree做索引也不错。

论坛徽章:
0
17 [报告]
发表于 2011-02-17 10:09 |只看该作者
用散列表应该要快的多。

论坛徽章:
0
18 [报告]
发表于 2011-02-17 11:10 |只看该作者
哈希表啊,

论坛徽章:
0
19 [报告]
发表于 2011-02-17 14:38 |只看该作者
用二叉树应该比哈希表要好,哈希表多一步根据哈希函数来计算元素落入哪个桶里,而且设计一个理想的哈希函数让这些元素均匀分布也不是那么容易。而二叉树则操作简单,一旦树建立完毕,操作的时间复杂度为lgn.

论坛徽章:
0
20 [报告]
发表于 2011-02-18 16:44 |只看该作者
用vector代替数组
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP