最近在搞一個統計,需要計算學生的成績排名,而且還需要並列的排名,可能這么說大家都不理解啥叫並列排名,舉個例子:
小明 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); } }
上面是運行結果,趕快去動手實驗一下吧。