【发布时间】:2016-09-29 20:05:25
【问题描述】:
我想维护一个计分板,其中包含根据他们的分数排序的 n 个玩家,我所做的是: 当玩家 i 获得 x 分时(如果他还不是顶级玩家),我将他的分数与他上方玩家的分数进行比较,必要时交换它们,然后我重复此操作,直到我发现他上方玩家的分数大于他的分数或直到他到达列表的顶部。 问题是它的最坏情况时间为 O (n),可以用 O (log n) 之类的方式完成吗??
【问题讨论】:
-
在实践中,永远不会达到最坏的情况,而 one-element-bubble-sort 是你能做的最好的。一旦计分板被填充并且相对稳定,一个条目的典型排名变化将主要是几个地方。并且作为奖励:参考的局部性比树或二分搜索更好。