某个大型的网络游戏网站,现有几亿用户,为了实时获取前十名游戏分数最高的玩家,使用以下哪个排序算法比较合理( )

  1. 基数排序
  2. 快速排序
  3. 二叉排序
  4. 堆排序
2 收藏


直接登录
最新评论
  • sdkl   2016/03/01

    随便什么排序,又不是要获取前十名的时候才排序,应该是分数更新后跟前十比较,然后更新前十的排名就可以了,用什么排序方法不是重点。

    • 小二丬 2016/03/02

      题目要求是“实时获取分数前十位”,分数肯定是动态变化的,所以要维护一个二叉查找树,按由大到小排序,取前十

      • sdkl   2016/03/02

        分数是动态变化的没错。我的意思是先做一次排序,得到前十的玩家分数,玩家分数更新的时候判断是否超越前十,如果超越了前十就更新前十排名。这样只要维护10个数据而已,获取的时候可以直接返回这10个数据。

  • Yuk亮 学生 2016/03/02

    二叉排序和堆排有什么区别?

  • 王先生 学生 2016/03/02

    个人认为应该为堆排序,创建一个大顶堆,采用堆排序以后,获取游戏的最高的前十名玩家的过程,实际上就是堆排序的更新问题,复杂度应该比其他的排序算法要小

  • tianxun   2016/03/03

    感觉是堆。。回复了等着看答案

  •   2016/03/03

    我觉得快速排序比较好吧

  • 应该是堆排序。
    基于两点考虑,一是只有堆是可以外部排序,几亿用户很可能无法在内存中排序。
    二是,当部分数据变化时,排序堆的变化最小。(总体性能最好)