又一道排序题
看到了两种思路
第一种,常规做法,实现对象接口进行排序,存入List中,再调用函数排序。然后逆序输出,就变成从大到小了。
第二种,开辟一个数组,老鼠体重就是数组下标,数组中的每个数存的是老鼠的颜色
1.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class D_3_31_2 {
public static void main(String[] args) throws NumberFormatException, IOException {
// TODO Auto-generated method stub
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
String ss="";
List<mouse>list=new ArrayList<mouse>();
while((ss=br.readLine())!=null)
{
int n=Integer.parseInt(ss);
for(int i=0;i<n;i++)
{
String s[]=br.readLine().split(" ");
int weight=Integer.parseInt(s[0]);
String color=s[1];
mouse m=new mouse();
m.weight=weight;
m.color=color;
list.add(m);
}
Collections.sort(list);
for(int i=list.size()-1;i>=0;i--)
{
System.out.println(list.get(i).color);
}
}
}
}
public class mouse implements Comparable<mouse>{
public int weight;
public String color;
@Override
public int compareTo(mouse o) {
// TODO Auto-generated method stub
if(this.weight>o.weight) return 1;
else if(this.weight<o.weight) return -1;
else return 0;
}
}
2.
import java.util.Scanner;
public class D_3_31_3 {
public static void main(String[] args) {
// TODO Auto-generated method stub
String all[]=new String[101];
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
for(int i=0;i<n;i++)
{
int weight=sc.nextInt();
all[weight]=sc.next();
}
for(int i=all.length-1;i>=0;i--)
{
if(all[i]!=null)
System.out.println(all[i]);
}
}
}
在这里需要注意的是
for(int i=all.length-1;i>=0;i--) 正确的
若写成 for(int i=all.length;i>=0;i--) 是会报错的。