假设一个班有共n个人,每个人都有m门课程成绩。 (1)请对每个人的成绩按总分进行排序。 (2)按每一门课程的成绩进行排序。 要求:m、n的值及所有的成绩都是通过键盘输入。
代码如下:
public class Test {
//根据总成绩排序
public static void sortbytotal(int[][] score,int n,int m){
int i,j,t;
int sum1=0,sum2=0;
for(i=0;i<n-1;i++){
for(j=0;j<n-1-i;j++){
sum1 = 0;
sum2 = 0;
for(int k=0;k<m;k++){
sum1 += score[j][k];
sum2 += score[j+1][k];
}
if(sum1 < sum2) { //从大到小排序
//交换
for(int k=0;k<m;k++){
t = score[j][k];
score[j][k] = score[j+1][k];
score[j+1][k] = t;
}
}
}
}
}
//根据课程排序
public static void sortbykc(int[][] score,int n,int m,int kc){
int i,j,t;
for(i=0;i<n-1;i++){
for(j=0;j<n-1-i;j++){
if(score[j][kc] < score[j+1][kc]) { //从大到小排序
//交换
for(int k=0;k<m;k++){
t = score[j][k];
score[j][k] = score[j+1][k];
score[j+1][k] = t;
}
}
}
}
}
public static void show(int[][] score,int n,int m){
for(int i=0;i<n;i++){
for(int j= 0;j<m;j++){
System.out.print(score[i][j]+ " ");
}
System.out.println();
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
int n,m;
Scanner sc = new Scanner(System.in);
System.out.print("请输入人数:");
n = sc.nextInt();
System.out.print("请输入课程数:");
m = sc.nextInt();
int[][] score = new int[n][m];
System.out.println("请输入"+n+"人"+m+"门课的成绩:");
for(int i = 0;i<n;i++){
for(int j=0;j<m;j++){
score[i][j] = sc.nextInt();
}
}
//按总成绩排序
sortbytotal(score,n,m);
//输出
show(score,n,m);
//按某门课程排序
System.out.println("按某门课程排序,请输入课程序号(1-课程数):");
int kc = sc.nextInt();
sortbykc(score,n,m,kc);
//输出
show(score,n,m);
}
}
排序 可以用这个方法。其他的就是输入、添加数据了。
Collections.sort(stus, new Comparator<Student>() {
@Override
public int compare(Student o1, Student o2) {
// 根据属性进行排序
if (o1.getScore()>o2.getScore()) {
return 1;
}
if (o1.getScore()==o2.getScore()) {
return 0;
}
return -1;
}
});