您的位置:首页 > 编程语言 > Java开发

学生成绩数组求学生排名

2015-07-25 21:26 399 查看
问题描述:给定一个数组,数组里面存储了学生的成绩,数组的先后则代表学生学号的前后顺序,输出一个数组代表学生的成绩排名。

问题分析:这个题目属于典型的要用JAVA泛型来求解的题目。具体的代码如下:

   

package test01;  

/** 

 * 给出分数数组,得到对应的名次数组 

 * 列如有:score = {4,2,5,4} 

 * 则输出:rank =  {2,3,1,2} 

 */  

import java.util.ArrayList;  

import java.util.Collections;  

import java.util.List;  

  

public class ScoreRank {  

    // 输出数组  

    public static void show(int[] s){  

        for(int x:s) System.out.print(x);  

        System.out.println();  

    }  

      

    // 取得名次  

    public static int[] scoreRank(int[] score) {  

        int[] temp = new int[score.length];  

        List lis = new ArrayList();  

        for(int x:score)    // 添加元素(不重复)  

            if(!lis.contains(x)) lis.add(x);  

        Collections.sort(lis);      // 从小到大排序  

        Collections.reverse(lis);   // 从大到小排序  

        for(int i=0;i<score.length;i++) // 下标从 0 开始  

            temp[i] = lis.indexOf(score[i])+1;  // 所以:正常名次 = 取得下标 + 1   

        return temp;  

    }  

    public static void main(String[] args){  

        int[] score = {4,2,5,4};    // 名次 {2,3,1,2}  

        int[] rank = scoreRank(score);  // 取得名次  

        System.out.print("原始分数:");show(score);  

        System.out.print("对应名次:");show(rank);  

    }  

}  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java 泛型