算法基础:求最大的两个值

算法基础:求最大的两个值

前面我的一篇博文笔记叫: 算法基础:求最大值,那么可不可以参照这种求最大值的思路,来求最大的两个值呢?

答:显然,这种笨拙的方法是可以的。

 

下面看看这种笨拙方法的具体实现,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个值”,该如何实现,总不能还用这种方法吧?

答:很显然,此时这种做法不可行了,算法代码不改善,这样实现下去,代码量得要多大......。

 

由此,引出排序算法,详文请看这篇笔记:算法基础:排序算法之选择排序。

你可能感兴趣的:([算法基础],求最大的两个值)