java 最大值 次大值_java 求最大、次大和第3大的值

本文介绍了一种通过最小比较次数找出一组整数中最大、次大及第三大数值的算法实现。该方法首先读取指定数量的整数,然后通过排序找出所需的三个最大值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我这里提供一种求最大、次大和第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);

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值