You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Java从数组中获取指定数量的最大n个元素

实现方案

现有代码仅能通过遍历得到单个最大值,要实现获取任意数量的TopN最大元素,可按以下逻辑改造:

  • 新增用户输入项,接收需要获取的最大元素个数
  • 增加输入合法性判断,避免输入的个数为负、为0,或者超过数组总长度导致程序报错
  • 用内置排序方法对数组排序后,直接截取对应数量的最大元素即可,逻辑简单不需要复杂实现
改造后可直接运行的代码
import java.util.*;
public class anna
{
    public static void main(String[] args)
    {
        int arrayLength, topN;
        Scanner s = new Scanner(System.in);
        System.out.print("请输入数组元素总个数:");
        arrayLength = s.nextInt();
        int a[] = new int[arrayLength];
        System.out.println("请逐个输入数组元素:");
        for(int i = 0; i < arrayLength; i++)
        {
            a[i] = s.nextInt();
        }
        System.out.print("请输入你要获取的最大元素个数:");
        topN = s.nextInt();
        // 校验输入是否合法
        if (topN <= 0 || topN > arrayLength) {
            System.out.println("输入不合法:要获取的元素个数必须在1到" + arrayLength + "之间");
            return;
        }
        // 对数组做升序排序
        Arrays.sort(a);
        System.out.println("数组中最大的" + topN + "个元素为:");
        // 升序排序后从末尾往前取topN个值,就是最大的N个元素
        for(int i = arrayLength - 1; i >= arrayLength - topN; i--)
        {
            System.out.print(a[i] + " ");
        }
    }
}
补充说明
  • 代码里用的Arrays.sort()是JDK内置的排序实现,日常入门场景性能足够,不需要自己手写排序逻辑
  • 如果需要输出的元素保持原数组中的相对顺序,可以先拷贝一份原数组再做排序处理,避免修改原数组的元素顺序
  • 如果数组长度极大、需要取的TopN数量很小(比如百万长度数组取Top10),可以用小顶堆实现,时间复杂度会比全数组排序更低,常规场景下直接排序的写法最简洁不容易出错

内容的提问来源于stack exchange,提问作者joker

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.03 02:24:21