用户网站,用户拥有积分,积分可能会在使用过程中随时更新,设计一种算法,在用户登录时显示其当前基本排名,积分为非负整数,且小于100万。

海量用户积分排名算法:

1. 利用数据库,创建表结构为用户ID和积分的表,用SQL查询得到排名。优点是简单,利用SQL功能,无需复杂查询逻辑,不引入额外的存储结构。缺点也明显,每次全表扫描,如果积分更新的锁定会影响查询效率。

2.均匀分区设计。将数据库分成几张表,表结构是from_score, to_score, count。优点避免全表扫描。缺点:积分非均匀分布使得性能提升不理想

3. 树形分区设计。采用分级分区:一级分区:分成两个区间;二级分区:把一级区间分成多个子区间。以此类推,直到叶子节点。这就成为了一个平衡二叉树结构。每次更新用户积分,则更新此排名树。每次更新是log n级别。缺点是算法相对复杂。

4. 积分排名数组:用户积分从s变成s+n,积分小于s的和大于s+n的都没有变化,区间[s,s+n)内的用户排名下降一位。用数组表示所有用户积分的排名。查询的复杂度为O(1),更新排名的复杂度是O(n)。优点是算法简单,在积分变化不大的情况下非常高效。缺点是当n比较大时,需要更新大量的元素,效率不如树形分区。

from《码农.算法》

海量用户积分排名算法相关推荐

  1. 海量用户积分排名算法探讨

    作者 / 魏大刚 @weidagang 问题 某海量用户网站,用户拥有积分,积分可能会在使用过程中随时更新.现在要为该网站设计一种算法,在每次用户登录时显示其当前积分排名.用户最大规模为2亿:积分为非 ...

  2. 满多少算积分 java_海量用户积分排名算法探讨

    戳上面的蓝字关注我们哦! 本文作者:Todd Wei 欢迎点击下方阅读原文 问题 某海量用户网站,用户拥有积分,积分可能会在使用过程中随时更新.现在要为该网站设计一种算法,在每次用户登录时显示其当前积 ...

  3. (转)海量用户积分排名算法探讨

    原文地址:http://www.uml.org.cn/sjjm/201207161.asp 问题 某海量用户网站,用户拥有积分,积分可能会在使用过程中随时更新.现在要为该网站设计一种算法,在每次用户登 ...

  4. [转]海量用户积分排名算法探讨

    原文链接:http://www.189works.com/article-64931-1.html 问  题 某海量用户网站,用户拥有积分,积分可能会在使用过程中随时更新.现在要为该网站设计一种算法, ...

  5. 海量数据 网站中用户积分排名问题

    海量数据 & 网站中用户积分排名问题 转自:http://www.cnblogs.com/weidagang2046/archive/2012/03/01/massive-user-ranki ...

  6. 热度TopN排名算法的设计

    热度TopN排名算法的设计 转载于 http://www.jianshu.com/p/44bee121463a 最近开始在简书上混,今日在首页上不经意间看到一篇<从豆瓣电影评分算法说起>, ...

  7. 用户积分和积分排行榜功能微服务实现

    文章目录 需求分析 什么是积分 积分的获取 为啥需要积分服务 数据库表 创建 ms-points 积分微服务 新增用户积分功能 用户积分实体 积分控制层 积分业务逻辑层 数据交互mapper层 网关 ...

  8. 基于用户投票的排名算法(四):牛顿冷却定律

    作者: 阮一峰 日期: 2012年3月16日 这个系列的前三篇,介绍了Hacker News,Reddit和Stack Overflow的排名算法. 今天,讨论一个更一般的数学模型. 这个系列的每篇文 ...

  9. 基于用户投票的排名算法(三):Stack Overflow

    作者: 阮一峰 日期: 2012年3月11日 上一篇文章,我介绍了Reddit的排名算法. 它的特点是,用户可以投赞成票,也可以投反对票.也就是说,除了时间因素以外,只要考虑两个变量就够了. 但是,还 ...

最新文章

  1. Call From hadoop102/192.168.121.102 to hadoop102:9000 failed on connection exception
  2. Silverlight教程第三部分:使用 Networking取回数据并填充DataGrid
  3. java相同数组拼接_java遍历数组并重新拼接数组里的元素
  4. 使用JavaScript实现页面选项自动添加行以及删除行 javaweb
  5. Eigen官网教程(2) Array类和元素级操作
  6. ROS学习笔记5(理解ROS节点)
  7. 高达大战分晓!日本机器人先赢后输,遭电锯切割惨惨惨 | 附高清完整视频
  8. CSAPP : Arch Lab 解题报告
  9. 五伤四损 - 万全《养生四要》
  10. Opengl ES之矩阵变换
  11. APP分享微信小程序
  12. notify和notifyAll区别
  13. 关于蓝牙开发,必须注意的广播
  14. 办公自动化系统OA学习要点
  15. PentestBOX教程
  16. 百度人脸产品套件开箱体验-壁虎开机初体验
  17. JLINK SW接线方式
  18. [附源码]计算机毕业设计JAVA全国人口普查管理系统论文
  19. C语言结构体指针数组小结
  20. 轻量级实时语义分割:ENet ERFNet

热门文章

  1. 解题思路LeetCode-70
  2. 企业文化怎样才能落地?
  3. 知道个税怎么计算工资
  4. 黑暗之魂(JZOJ)
  5. 中小企业防御网络攻击的 6 种方法
  6. swiper 导航切换按钮点击出现边框线,元素点击出现边框线@令狐张豪
  7. 11月了,焦虑烦躁,然后是无悲无喜
  8. python数据可视化—用pyecharts画雷达图
  9. 10_那些格调很高的个性签名
  10. 西工大附中高考 2021 成绩查询,2021中考择校①:目标西工大附中,这些信息你得知道!...