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是数组长度。
