有多个关键字的值,类似SELECT语句的底层算法实现?

denallo 2013-12-22 02:10:08
有一个数据结构A,包含多个数据成员,这些成员基本上可以看作都是int类型,每一个成员都视为一个关键字类型,把所有的关键字类型加入一个集合KEY_SET,现在希望能通过提供KEY_SET的一个子集,由此查找出匹配该关键字子集的所有A的实例(很像SQL中的SELECT语句)
假如作为值的数据结构是这样的

struct A
{
int a;
int b;
int c;
...
int z;
}

用这样的方式进行查找:

search(a,d,f),这样子就返回一个A结构的实例的列表,其中每一个实例的a,d,f成员与传递给search的参数匹配,search的参数数目不定,可以是search(a),search(a,b,c),search(...)等
简单的来说就是,一个值有多个关键字,可以通过部分关键字的匹配来获取这个值的引用。
我初步的想法是为每一个关键字配一个哈希表,所有哈希表的值类型都是A,路过的高手有谁知道这样的问题在经典算法问题中是否有对应?
...全文
190 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
denallo 2013-12-27
  • 打赏
  • 举报
回复
引用 3 楼 truelance 的回复:
数据库为了提高查找速度, 都会建立多个索引, 将常用的查询条件都建立索引. 索引可以是B树, 红黑树, Hash表等等. 对于非索引的条件, 通常是先找到一个最接近的索引, 先按所以查找出结果集, 再遍历结果集匹配其他条件.
引用 4 楼 q745401990 的回复:
既然你为每一个值都配一个hash,那么先hash 表处理,再结合一些合适的树形结构了
恩,我按关键字的类型划分等价类,每个等价类根据其所属关键字类的特性选择结构与算法,用树结构把不同的等价类关联起来,其实就是一个在集合中确定一个子集,然后在子集里进一步确定一个子集的问题,基本思路是这样,谢谢你们的回答
熊熊大叔 2013-12-24
  • 打赏
  • 举报
回复
数据库为了提高查找速度, 都会建立多个索引, 将常用的查询条件都建立索引. 索引可以是B树, 红黑树, Hash表等等. 对于非索引的条件, 通常是先找到一个最接近的索引, 先按所以查找出结果集, 再遍历结果集匹配其他条件.
一起来玩玩呗 2013-12-24
  • 打赏
  • 举报
回复
既然你为每一个值都配一个hash,那么先hash 表处理,再结合一些合适的树形结构了
  • 打赏
  • 举报
回复
不明觉厉。。。。
denallo 2013-12-23
  • 打赏
  • 举报
回复
楼主,multimap,红黑树 好吧,经常性自问自答

33,007

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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