免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123下一页
最近访问板块 发新帖
查看: 5717 | 回复: 20
打印 上一主题 下一主题

删帖吧 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-09-28 00:02 |只看该作者 |倒序浏览
本帖最后由 xyfree 于 2012-01-21 03:30 编辑

论坛徽章:
0
2 [报告]
发表于 2011-09-28 07:57 |只看该作者
二分呗

论坛徽章:
14
巨蟹座
日期:2013-11-19 14:09:4615-16赛季CBA联赛之青岛
日期:2016-07-05 12:36:0515-16赛季CBA联赛之广东
日期:2016-06-29 11:45:542015亚冠之全北现代
日期:2015-07-22 08:09:472015年辞旧岁徽章
日期:2015-03-03 16:54:15巨蟹座
日期:2014-12-29 08:22:29射手座
日期:2014-12-05 08:20:39狮子座
日期:2014-11-05 12:33:52寅虎
日期:2014-08-13 09:01:31巳蛇
日期:2014-06-16 16:29:52技术图书徽章
日期:2014-04-15 08:44:01天蝎座
日期:2014-03-11 13:06:45
3 [报告]
发表于 2011-09-28 08:11 |只看该作者
up楼上,排序后二分

论坛徽章:
0
4 [报告]
发表于 2011-09-28 08:24 |只看该作者
楼主是想回避指针运算的未定义行为吧

论坛徽章:
0
5 [报告]
发表于 2011-09-28 08:45 |只看该作者
本帖最后由 xyfree 于 2012-01-21 04:19 编辑

论坛徽章:
0
6 [报告]
发表于 2011-09-28 09:55 |只看该作者
再详细些 题目。

论坛徽章:
2
青铜圣斗士
日期:2015-11-26 06:15:59数据库技术版块每日发帖之星
日期:2016-07-24 06:20:00
7 [报告]
发表于 2011-09-28 10:03 |只看该作者
回复 5# xyfree

怎么会很久? 32位(暂不考虑特大内存使用接口)不重叠的区间最多2^32个,最多32次比较。

想要更快就需要内存区间有特殊要求了。比如:
1. 区间大小都是N
2. 起始地址都是N的整数倍
3. 要查询的指针一定在某个区间中 —— 即不需要判断是否确实在某个区间
直接取模就完了。

如果将条件1换成区间大小都是N的整数倍, 可以将区间划分为大小为N的若干个, 每个都保存相同的信息表示是从同一区间划分得到的。

貌似你都已经有实现的样子?

论坛徽章:
14
巨蟹座
日期:2013-11-19 14:09:4615-16赛季CBA联赛之青岛
日期:2016-07-05 12:36:0515-16赛季CBA联赛之广东
日期:2016-06-29 11:45:542015亚冠之全北现代
日期:2015-07-22 08:09:472015年辞旧岁徽章
日期:2015-03-03 16:54:15巨蟹座
日期:2014-12-29 08:22:29射手座
日期:2014-12-05 08:20:39狮子座
日期:2014-11-05 12:33:52寅虎
日期:2014-08-13 09:01:31巳蛇
日期:2014-06-16 16:29:52技术图书徽章
日期:2014-04-15 08:44:01天蝎座
日期:2014-03-11 13:06:45
8 [报告]
发表于 2011-09-28 12:18 |只看该作者
本帖最后由 bruceteen 于 2011-09-28 12:19 编辑
我考虑过用二分,但并不是所有区间的地址范围都是连在一起的,可能是有空隙的,

某些情况下,所要查询的地址如果是落在空隙中的话,简单的二分法要很久才能查到。

二分不是不好,但至少要对这个case做一点优化设计吧?
xyfree 发表于 2011-09-28 08:45



    我听不懂,为什么“所要查询的地址如果是落在空隙中的话,简单的二分法要很久才能查到”?
我举个例子吧,你的区间是[100,200), [300,400), [500,1000)
排序一下得到集合 { 100, 200, 300, 400, 500, 1000 }
假设你搜索 350,得到一个下标索引2,因为2为偶数,所以结论是:350在第(2/2=1)个区间,这个区间的范围是p[2]到p[2+1]
假设你搜索 450,得到一个下标索引3,因为3为奇数,所以结论是:450落在第(3/2=1)个区间到第((3+1)/2=2)个区间之间

论坛徽章:
0
9 [报告]
发表于 2011-09-28 16:06 |只看该作者
本帖最后由 xyfree 于 2012-01-21 04:19 编辑

论坛徽章:
0
10 [报告]
发表于 2011-09-28 16:13 |只看该作者
为什么需要很久?
在2^32的地址空间内,查找次数不会超过32次
如果是2^64,也不会超过64次
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP