免费注册 查看新帖 |

Chinaunix

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

[算法] 请教高效算法 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2007-08-29 16:53 |只看该作者
谢谢blackuhlan的回复
我现在采用的方法是全部采用平衡二叉树,假设alv_tree是一个平衡二叉树结构,定义如下的结构:
typedef struct {
avl_tree item;
avl_tree *head;
} node;
A、B、C、D都是这样的结构,E也是类似的结构,只是多了一些字段用来保存相关数据。
A保存在一个平衡二叉树中,item字段用于定位,而head指针用于指向属于A下面的B元素的二叉树的头指针,依此类推。程序中只需要保存一个A树的头指针即可。
这样查询效率还可以,log2n的时间复杂度,4G个数据只需要比较32次,由于有5层,定位到最后的E节点需要5*log2n(这里的n每层都不一样)。
就是结构比较复杂。

论坛徽章:
0
12 [报告]
发表于 2007-08-29 20:56 |只看该作者
这种情况使用SQLite最好了。
不用关心数据库联接,有C接口,整个数据库在一个文件里面。
而且说实在,自己写的算法基本不会比数据库快。

论坛徽章:
0
13 [报告]
发表于 2007-08-30 00:53 |只看该作者

sqlite还不是用的b+树

据我所知,sqlite主要数据结构也是用的b+树。

[ 本帖最后由 NewCore 于 2007-8-30 00:58 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP