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

本文介绍了一种使用Java实现的高效算法,该算法用于从大量整数中找出最大、次大和第三大的数值。通过读取用户输入的整数并进行排序,算法能够快速确定这三个关键值,即使在数据量极大时也能保持良好的性能。

摘要生成于 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<String> list=new ArrayList<String>();
		
		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<n;i++){
			m=s.next();
			arr[i]=m;
		}

		int k=n;
        for (int i=0; i<arr.length; 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、付费专栏及课程。

余额充值