zoukankan      html  css  js  c++  java
  • java实现最大五个数

    ** 最大5个数**

    [12,127,85,66,27,34,15,344,156,344,29,47,....]  
    
    这是某设备测量到的工程数据。
    
    因工程要求,需要找出最大的5个值。
    
    一般的想法是对它排序,输出前5个。但当数据较多时,这样做很浪费时间。因为对输出数据以外的数据进行排序并非工程要求,即便是要输出的5个数字,也并不要求按大小顺序,只要找到5个就可以。
    
    以下的代码采用了另外的思路。考虑如果手里已经抓着5个最大数,再来一个数据怎么办呢?让它和手里的数据比,如果比哪个大,就抢占它的座位,让那个被挤出来的再自己找位子,....
    
    import java.util.*;
    public class B23
    {
        public static List<Integer> max5(List<Integer> lst)
        {
            if(lst.size()<=5) return lst;
            
            int a = _______________________;  // 填空
            List<Integer> b = max5(lst);
            
            for(int i=0; i<b.size(); i++)
            {
                int t = b.get(i);
                if(a>t)
                {
                    __________________;  // 填空
                    a = t;  
                }
            }
            
            return b;
        }
        
        public static void main(String[] args)
        {
            List<Integer> lst = new Vector<Integer>();
            lst.addAll(Arrays.asList(12,127,85,66,27,34,15,344,156,344,29,47));        
            System.out.println(max5(lst));
        }
    }
    
    
        请分析代码逻辑,并推测划线处的代码。
    
        答案写在 “解答.txt” 文件中
    
        注意:只写划线处应该填的内容,划线前后的内容不要抄写。
    
    
    lst.remove(0)
    lst.set(i, a) 或者 b.set(i, a)
    
  • 相关阅读:
    vector详解
    笔记
    积木大赛
    codevs 1086 栈(Catalan数)
    不要把球传我
    同余方程 (codevs1200)
    最小集合
    数的计算
    产生数
    逃跑的拉尔夫
  • 原文地址:https://www.cnblogs.com/a1439775520/p/12947259.html
Copyright © 2011-2022 走看看