- 论坛徽章:
- 15
|
本帖最后由 yulihua49 于 2014-05-16 11:06 编辑
lxyscls 发表于 2014-05-15 17:52
哈希的插入、删除、查找都足够得好了,空间上的占用也不见得就比平衡树多
请问除了”有序“这个因素外, ...
可以这么说。
我们有时需要比较>,>=,<,<=,这时hash就不灵了,必须平衡树。
看我们tree.h的一部分:- //返回=key的节点
- T_Tree * BB_Tree_Find(T_Tree *sp,void *content_key,int len,
- int (*Cmp_rec)(void *sp_content,void *content_key,int len));
- //返回>key的节点
- T_Tree * BB_Tree_GT(T_Tree *sp,void *content_key,int len,
- int (*Cmp_rec)(void *s1,void *s2,int len));
- //返回>=key的节点
- T_Tree * BB_Tree_GTEQ(T_Tree *sp,void *content_key,int len,
- int (*Cmp_rec)(void *s1,void *s2,int len));
- //返回<key的节点
- T_Tree * BB_Tree_LT(T_Tree *sp,void *content_key,int len,
- int (*Cmp_rec)(void *s1,void *s2,int len));
- //返回<=key的节点
- T_Tree * BB_Tree_LTEQ(T_Tree *sp,void *content_key,int len,
- int (*Cmp_rec)(void *s1,void *s2,int len));
- T_Tree * BB_Tree_Del(T_Tree *tp,void *content_key,int size_key,
- int (*Comp)(void *node,void *content,int size_content),
- int (*user_free)(void *content),int *flg);
- T_Tree * BB_Tree_MAX(T_Tree *sp);
- T_Tree * BB_Tree_MIN(T_Tree *sp);
复制代码 是我们内存数据库工具的一部分,hash怎么玩?
还有hash表动态插、删节点,导致性能劣化。
楼主大有“既生瑜何生亮”的感慨。事实上,瑜和亮都是需要的,各有各的用处。
|
|