Chinaunix首页 | 论坛 | 博客
  • 博客访问: 179070
  • 博文数量: 27
  • 博客积分: 2774
  • 博客等级: 少校
  • 技术积分: 250
  • 用 户 组: 普通用户
  • 注册时间: 2007-08-31 11:00
文章分类

全部博文(27)

文章存档

2011年(2)

2010年(5)

2009年(10)

2008年(3)

2007年(7)

分类: C/C++

2009-05-23 02:06:27

基于之前实现的区间树IP/PORT组。
新的需求是基于权重进行组内节点的随机选择。

原理很简单,无非是将权重值作为关键字进行区间树的组织。
即,对于需要插入到iv_tree { T }的权重为W的节点N。
在实际插入时,插入的是N: [ W + MAX(T) - 1, W + MAX(T) ]
查看时,可以很容易的得知节点N的权重为high(N) - low(N) + 1

在进行随机选择时,既可以 rand % MAX(T)来检索到相应的节点N。

需要注意的是,在删除其中节点X时,需要将所有大于X的节点进行差值修正,以避免[ 0, MAX(T) ]之间出现“空洞”。

已实现。

值得一提的是,由于权重的树与原始的IP/PORT树在同一组中,现在的代码看起来更晕了~~哈哈哈
阅读(1666) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~