算法基础:求最大的两个值
前面我的一篇博文笔记叫: 算法基础:求最大值,那么可不可以参照这种求最大值的思路,来求最大的两个值呢?
答:显然,这种笨拙的方法是可以的。
下面看看这种笨拙方法的具体实现,Java版 Demo2:
package simple.callback.math;
/**
* @program: psimple
* @description: 求最大值
* @author: Mr.Wang
* @create: 2021-01-06 01:15
**/
public class MaximumV2 {
static double doubs[] = {50.36, 464654, 52, 556.12, 96.5, 5451.3, 554, 82, 67.7};
public static void main(String[] args) {
//获取第一个最大值
double firstMax = MaximumV2.getMaxNum(doubs);
double[] nums2;
//排除最大数值,确定新数组长度
int len = 0;
for (int i = 0; i < doubs.length; i++) {
if (doubs[i] != firstMax) {
len++;
}
}
//排除最大数值得到一个新数组
int indexz = 0;
nums2 = new double[len];
for (int i = 0; i < doubs.length; i++) {
if (doubs[i] != firstMax) {
nums2[indexz] = doubs[i];
indexz++;
}
}
//求得新数组的最大值
double twoMax = MaximumV2.getMaxNum(nums2);
System.out.println("获取第一个大值:" + firstMax + ",获取第二个大值:" + twoMax);
}
public static double getMaxNum(double[] nums) {
double max = nums[0];
for (int i = 0; i < nums.length; i++) {
if (nums[i] > max)
max = nums[i];
}
return max;
}
}
输出:
获取第一个大值:464654.0,获取第二个大值:5451.3
很显然这种笨拙的方法是可以,不过....
假定我们现在要求求“求最大的3个值”、“求最大的4个值”、“求最大的5个值”,“求最大的n个值”,该如何实现,总不能还用这种方法吧?
答:很显然,此时这种做法不可行了,算法代码不改善,这样实现下去,代码量得要多大......。
扫描二维码关注公众号,回复:
13153852 查看本文章
由此,引出排序算法,详文请看这篇笔记:算法基础:排序算法之选择排序。