【发布时间】:2011-08-01 16:00:30
【问题描述】:
给定分数列表(例如 5、5、4、2、2、0),我希望返回标准比赛排名(1、1、3、4、4、6)。
来自Wikipedia's ranking page,这里是SRC的摘要:
标准比赛排名(“1224”排名)
在竞争排名中,比较相等的项目获得相同的 排名数字,然后排名数字留下一个差距。这 在这个差距中被遗漏的排名数字的数量减少了一个 比比较相等的项目数。等效地,每个 item 的排名数是 1 加上排名在它上面的项目数。 这种排名策略经常被用于比赛,因为它 意味着如果两个(或更多)竞争者在 排名,所有排名低于他们的人的位置不受影响 (即,只有一个人得分时,竞争对手才会获得第二名 比他们好,如果恰好有两个人得分比他们高,则排名第三, 第四,如果恰好三个人得分比他们高,等等)。
因此,如果 A 排在 B 和 C(比较相等)之前,两者都是 排在 D 前面,然后 A 获得排名第一(“第一”),B 获得 排名第 2(“并列第二”),C 也获得排名第 2 (“并列第二”)和 D 获得排名第 4(“第四”)。在这种情况下, 没有人会获得排名第 3(“第三”),这将被保留为 一个缺口。
任何语言的代码都会很有帮助。
顺便说一句,我很想看看其他排名类型的算法(修改后的竞争排名、密集排名、序数排名和分数排名)。
【问题讨论】:
-
你的参数列表排序了吗?
-
@Vakimshaar - 是的,分数按降序排列