計算並列排名的算法


最近在搞一個統計,需要計算學生的成績排名,而且還需要並列的排名,可能這么說大家都不理解啥叫並列排名,舉個例子:

小明 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);
        }
    }

上面是運行結果,趕快去動手實驗一下吧。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM