我这里提供一种求最大、次大和第3大的值 的方法:
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
//原题: 求最大、次大和第3大的值 (100 分)
//本题目要求读入n个整数,要求用最少的比较次数,输出它们的最大值、第2大的值和第3大的值。例如,对于13 13 1 10 34 10这6个数,最大值为34,第2大的值为13,第3大的值为10。
//
//
//输入样例:
//6
//13 13 1 10 34 10
//输出样例:
//34 13 10
int n;//输入个数
String max3,max1,max2;//第三大数 、第二大数 、第一大数
String m;
List list=new ArrayList();
System.out.println("请输入读入的整数个数n(n<=1000 000):");
Scanner s=new Scanner(System.in);
n=s.nextInt();
String[] arr = new String[n];
if(n>1000000){
System.out.println("n 大于1000 000 ");
}
if(n<3){
System.out.println("Invalid Input");
}
for(int i=0;i
m=s.next();
arr[i]=m;
}
int k=n;
for (int i=0; i
if(!list.contains(arr[i])) {
list.add(arr[i]);
}else{
k--;
}
}
String[] res = new String[k];
try {
list.toArray(res);
Arrays.sort(res);// 排序
} catch (Exception e) {
e.printStackTrace();
}
int size=res.length;
if(size==2){
System.out.println(" There is no third largest element");
}
else if(size==1){
System.out.println(" There is no second largest and third largest element");
}else{
max3=res[size-3];//第三大数
max2=res[size-2];//第二大数
max1=res[size-1];//第一大数
System.out.println(max1+" "+max2+" "+max3);
}
}
}