[12,127,85,66,27,34,15,344,156,344,29,47,....] 这是某设备测量到的工程数据。 因工程要求,需要找出最大的5个值。
2013-03-25 18:37
337 查看
/* [12,127,85,66,27,34,15,344,156,344,29,47,....] 这是某设备测量到的工程数据。 因工程要求,需要找出最大的5个值。 一般的想法是对它排序,输出前5个。但当数据较多时,这样做很浪费时间。 因为对输出数据以外的数据进行排序并非工程要求,即便是要输出的5个数字, 也并不要求按大小顺序,只要找到5个就可以。 以下的代码采用了另外的思路。考虑如果手里已经抓着5个最大数,再来一个数据怎么办呢? 让它和手里的数据比,如果比哪个大,就抢占它的座位,让那个被挤出来的再自己找位子,.... 请分析代码逻辑,并推测划线处的代码。 答案写在 “解答.txt” 文件中 注意:只写划线处应该填的内容,划线前后的内容不要抄写。 */ import java.util.*; public class Demo11_B23 { public static List<Integer> max5(List<Integer> lst) { if (lst.size() <= 5) return lst; int a = lst.remove(lst.size() - 1); // 填空 List<Integer> b = max5(lst); for (int i = 0; i < b.size(); i++) { int t = b.get(i); if (a > t) { lst.set(i, a); // 填空 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)); } }运行结果:
[344, 344, 156, 127, 85]
相关文章推荐
- 因工程要求,需要找出最大的5个值。
- 给定一个无序数组,包含正数、负数和0,要求从中找出3个数的乘积,使得乘积最大 java实现
- TOP-K排序算法,从海量不重复数据中找出最大/小的K个数
- 使用JAVA找出一组数据的最大值
- 笔试题&面试题:给定n个数,要求比较次数1.5n同时找出最大值和最小值
- Chapter9——建立一个对象数组,内放5个学生的数据(学号,成绩),设立一个函数max,用指向对象的指针做函数参数,在max函数中找出5个学生中成绩最高者,并输出其学号。
- 一是关于怎样找出和去除重复数据,这在另一个帖子利已有详细介绍。二是关于找出某一列里最大或最小的前几个,或是大于或小于某一个值(最大值或平均值)的数据
- C++文本查询程序 定义类管理数据 用引用共享数据 不用智能指针 C++Primer练习12.27
- 找出数组中最大数和最小数,要求O(3/2n)
- 现有杂乱无序的1-20二十个数,这二十个数为:1,18,4,13,6,10,15,2,17,3,19,7,16,8,11,14,9,12,5,20,试依次求出相邻四个数之和的最大和最小值
- 软件工程之— 项目开发文档(数据要求说明书)
- Mysql中剔除重复字段并按主键降序排序后找出主键值最大的数据
- 建立一个对象数组,内放5个学生的数据(学号,成绩),用指向对象的指针做函数参数,在max函数中找出5个学生中成绩最高者,并输出其学号。
- 输入5个整数,找出其中最大整数和最小整数所在的位置,并将二者对调,然后输出调整后的5个数。
- 15.利用递归法求一批数据的最大值。
- 【数据结构】找出N个数据中最大的前k个数据(利用堆排序)
- Python实现:斐波那契数列、交换两个变量的值、从一组数据中找出最大最小值
- C++文本查询程序 定义类管理数据 用引用共享数据 不用智能指针 C++Primer练习12.27
- 一个无序整数数组,数组元素大于5个,请用一种高效的算法找出其中最大的5个值.