引言
语文 | 数学 | 英语 | 总分 | 名次 |
---|---|---|---|---|
88 | 90 | 87 | 265 | 1 |
88 | 87 | 90 | 265 | 1 |
90 | 85 | 88 | 263 | 3 |
68 | 95 | 60 | 223 | 4 |
像上面这样的排名是生活中很常见的,即分数相同的学生会有相同的排名。两个265分都是第一名,后面没有第二名,直接就是第三名。
在excel中可以使用rank函数实现这个功能,在编程中应该怎么实现呢?
下面使用C++来举例说明。
C++实现
基本思想:
1. 使用sort函数以总分为标准进行排序
2. 从下标为1的学生开始,判断总分是否与前一名相同。如果相同,则排名等于前一名的排名;如果不相同,则排名等于(当前下标+1)。