zoukankan      html  css  js  c++  java
  • 计算并列排名的算法

    最近在搞一个统计,需要计算学生的成绩排名,而且还需要并列的排名,可能这么说大家都不理解啥叫并列排名,举个例子:

    小明 100分 小红100分  小芳90分  小李80分 小孙80分 小兰70分

    那么最终的排名应该是:小明 1,小红 1,小芳 3,小李4,小孙4,小兰6。

    相信通过上面的例子大家应该明白什么叫并列排序了吧,相同的可以并列,但是不同的需要按照人头去计算,话不多说,直接上代码:

     public static void reckonRanking(){
            //这里需要将要排名的数组按照你自己的排名规则(从小到大,或从大到小)去排好,可以用冒泡排序或者插入排序等其他算法,这里我就不多说了,自己百度去吧
            //下面的例子直接我就用排好序的数组去写了
            String[] nums=new String[]{"100","100","90","80","80","70","70","60","60","40"};
            String temp="";                        //临时变量
            int num=0;                            //自然排序变量
            int final_num=0;                    //最终排名变量
            int temp_num=0;                        //临时增量
            for (String str : nums) {
                //如果临时变量和错误率相等 说明本次错误率和上次是一致的 那么排名也应该和上次一样,但是要记录这种情况出现几次,最后如果当前排名不和上次一致时需要将排名加上空挡的增量
                if(temp.equals(str)){
                    temp_num++;                     //相等时记录增量  有几条一样的排名
                    final_num=num;               //将排名赋值成和上一次排名一样    
                }else{
                    num++;                            //不相等时 排名自然增加    
                    final_num=num+temp_num;         //最终排名为自然排名加上之前的相等记录增量
                    num=final_num;                  //将自然排名设置为最终排名的数上    
                    temp_num=0;                       //记录相等排名的增量置空    
                }
                temp=str;                           //用个临时变量去记录上次的错误率    
                System.out.println("最后的排名===="+final_num);
            }
        }

    上面是运行结果,赶快去动手实验一下吧。

  • 相关阅读:
    jsp 接收汉字参数乱码
    文件下载汉字乱码
    服务器端汉字乱码
    SpringMVC + ajax
    Java正确URL解码方式:URLDecoder.decode
    spring MVC 文件上传错误
    json
    android 带checkbox的List
    Incorrect string value: 'xE8x8Bx8FxE6x99xA8...' for column 'user_name' at row 1
    django初探-创建简单的博客系统(一)
  • 原文地址:https://www.cnblogs.com/mycifeng/p/6682122.html
Copyright © 2011-2022 走看看