查看单个帖子
  #1 (permalink)  
旧 2008-08-01
wqqafnd 的头像
wqqafnd wqqafnd 当前离线
高级会员
 
注册日期: 2004-10-08
帖子: 196
文章: 1
wqqafnd 正向着好的方向发展
发送 MSN 消息给 wqqafnd
默认 求大量数据 插入、删除 和 查询排序位置 的方案

有百万量级的数据,放入一个数据结构里,要求有快速的插入、删除和搜索操作,还要查询每个元素在所有元素中的排序位置序号,该怎样解决这个问题?

比如,对于(2,3,4,7,9)这几个数据,我不仅需要找到它们,还要知道每个数字在总数据中的排位(0,1,2,3,4)。由于需要随时插入、删除数据,用数组排序应该不可行。

我的想法是修改平衡二叉树(AVL或RB TREE)的实现,增加一个记录每个节点的左子(包括孙子等)个数的字段,在每次插入节点的时候修改路径上每个节点的值。但问题是旋转树的节点的时候,会比较复杂,而且还不知道是否可行(rb tree可能需要向上递归旋转),还有删除的时候可能更加麻烦。

我想问问还有其他的实现方法吗,或者求证一下我的想法是否可行,谢谢各位!
回复时引用此帖