隐藏页面特效

排名的实现

很多排序题目会要求在排序之后计算出每个个体的排名,而且一般规则都是:
分数不同的排名不同,分数相同的排名相同但占用一个排位!
举个简单的例子:有五位同学的分数分别为91、90、90、90、90、89,那么对应的排名应该是1、2、2、2、2、5。
此种情况,一般都要在结构体中进行类型定义的时候需要将排名信息加入到结构体中。因此在数组排完序后就有以下两种方法来实现排名的计算:

1.先将数组第一个个体(设数组下标从0开始)的排名记为1,然后遍历剩余的个体。如果当前的个体的分数等于上一个个体的分数,那么当前个体的排名就等于上一个个体的排名;否则,当前的个体的排名就等于其数据下标加一。相应的代码:

student[0].rank = 1;
for(int i=1;i<n;i++){
    if(student[i].score != student[i-1].score)
        student[i].rank = student[i-1].rank;
    else
        student[i].rank = i + 1;
}

2.有些题目并不需要记录下排名信息,而是直接输出就可以,那么有这样的方法:
设置一个int型变量,如rank = 1,然后遍历所有的个体:如果当前个体不是第一个个体且当前个体的分数不等于上一个个体的分数,那么令rank等于数据下标加一,此时的rank就是当前个体的排名,直接输出。
这种做法适合信息量较大,而且只需要输出排名信息,不记录排名信息!相应的代码:

int rank = 1;
for(int i=0;i<n;i++){
    if(rank > 0 && student[i].score != student[i-1].score)
        rank = i + 1;
    //输出当前个体信息,或者令student[i].rank = rank;
}

__EOF__

本文作者techgy
本文链接https://www.cnblogs.com/techgy/p/15022205.html
关于博主:I am a good person
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   AI未来10Y  阅读(67)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
点击右上角即可分享
微信分享提示