zoukankan      html  css  js  c++  java
  • 排名的实现

    很多排序题目会要求在排序之后计算出每个个体的排名,而且一般规则都是:
    分数不同的排名不同,分数相同的排名相同但占用一个排位!
    举个简单的例子:有五位同学的分数分别为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;
    }
  • 相关阅读:
    LeetCode 258 Add Digits
    LeetCode 231 Power of Two
    LeetCode 28 Implement strStr()
    LeetCode 26 Remove Duplicates from Sorted Array
    LeetCode 21 Merge Two Sorted Lists
    LeetCode 20 Valid Parentheses
    图形处理函数库 ImageTTFBBox
    php一些函数
    func_get_arg(),func_get_args()和func_num_args()的用法
    人生不是故事,人生是世故,摸爬滚打才不会辜负功名尘土
  • 原文地址:https://www.cnblogs.com/techgy/p/15022205.html
Copyright © 2011-2022 走看看