了解我们正在谈论的是哪种数据将是很好的。存在多少个用户?平均有多少人会在线?“可见用户”与所有用户的比例(稀疏与密集)相比如何?
修改算法 不要先弹出 算法 ,而是从在线用户集中选择随机元素。这将改善平衡,并可能有助于分摊复杂度,具体取决于这两套比率!
替代算法(结构更清晰;最坏的情况仍然很糟糕;如果稀疏 出现 ,应该会很好)
- 始终 视为 平衡树(插入O(log n))
- 保持 在线 平衡状态。
- 虽然没有足够的用户选择:
- 搜索 可见的 第一个间隙(例如[0,1,3,7]-> 2;根据SO-link的 O(log n))
- 搜索> =差距值(O(log n))的第一个用户
- 如果用户<next_gap_neighbor(在上面的示例中:3;在选择间隙2之后的下一个值)
- ->选择
- 其他
- -> 暂时 添加选择间隙值(此刻;模型决定 在线 更新的频率)以 查看 或以某种方式将搜索限制为>选择间隙值(O(log n))
根据数据,这应该工作非常好,如果数据是巨大的, 看到的 是稀疏的!



