欢迎访问宙启技术站
智能推送

Java函数中查找最大值和最小值的算法实现

发布时间:2023-07-01 02:33:26

在Java函数中查找最大值和最小值的算法实现,这里我们可以使用常规的遍历法和分治法两种方法。

1. 常规的遍历法:

这种方法比较简单直观,只需要遍历整个数组,同时用两个变量分别记录最大值和最小值。

public void findMaxAndMin(int[] nums) {
    int max = nums[0];
    int min = nums[0];

    for (int i = 1; i < nums.length; i++) {
        if (nums[i] > max) {
            max = nums[i];
        }
        if (nums[i] < min) {
            min = nums[i];
        }
    }

    System.out.println("最大值是:" + max);
    System.out.println("最小值是:" + min);
}

该方法的时间复杂度为O(n),其中n是数组长度。

2. 分治法:

分治法是一种递归思想的算法,将数组分成两部分,分别求出两部分的最大值和最小值,然后将最大值和最小值合并。

public class MaxMinResult {
    private int max;
    private int min;

    public MaxMinResult(int max, int min) {
        this.max = max;
        this.min = min;
    }

    public int getMax() {
        return max;
    }

    public int getMin() {
        return min;
    }
}

public class FindMaxMin {
    public MaxMinResult findMaxAndMin(int[] nums, int start, int end) {
        if (start == end) {
            return new MaxMinResult(nums[start], nums[start]);
        } else if (start + 1 == end) {
            return new MaxMinResult(Math.max(nums[start], nums[end]), Math.min(nums[start], nums[end]));
        } else {
            int mid = (start + end) / 2;
            MaxMinResult leftResult = findMaxAndMin(nums, start, mid);
            MaxMinResult rightResult = findMaxAndMin(nums, mid + 1, end);
            int max = Math.max(leftResult.getMax(), rightResult.getMax());
            int min = Math.min(leftResult.getMin(), rightResult.getMin());

            return new MaxMinResult(max, min);
        }
    }
}

调用方法如下:

FindMaxMin findMaxMin = new FindMaxMin();
int[] nums = {1, 2, 3, 4, 5};
MaxMinResult result = findMaxMin.findMaxAndMin(nums, 0, nums.length - 1);
System.out.println("最大值是:" + result.getMax());
System.out.println("最小值是:" + result.getMin());

这种方法的时间复杂度为O(n),其中n是数组长度。