Java代码中如果获取一个int数组中的最大值和最小值,如下代码
public class Test {
public static void main(String[] args) {
int[] arr = {1, 2, 3, 4, 5, 10, 20, 30, 40, 50};
FindArrayData findData = new FindArrayData();
findData.FindMaxAndMin(arr);
System.out.println("数组中最大的值是:" + findData.getMax());
System.out.println("数组中最小的值是:" + findData.getMin());
}
public static class FindArrayData {
private int max;
private int min;
public int getMax() {
return max;
}
public int getMin() {
return min;
}
public void FindMaxAndMin(int[] arr) {
if (arr == null) {
System.out.println("输入的数组为空");
return;
}
int i = 0;
int len = arr.length;
max = arr[0];
min = arr[0];
//两两分组,把较小的数挪到左边,较大的数挪到右边
for (i = 0; i < len - 1; i += 2) {
if (arr[i] > arr[i + 1]) {
int tmp = arr[i];
arr[i] = arr[i + 1];
arr[i + 1] = tmp;
}
}
//最小值放在各个分组的左边
min = arr[0];
for (i = 2; i < len; i += 2) {
if (arr[i] < min) {
min = arr[i];
}
}
//最大值放在各个分组的右边
max = arr[1];
for (i = 3; i < len; i += 2) {
if (arr[i] > max) {
max = arr[i];
}
}
//如果数组中元素个数是奇数个,最后一个元素被分为一组,需要特殊处理
if (len % 2 == 1) {
if (max < arr[len - 1])
max = arr[len - 2];
if (min > arr[len - 1])
min = arr[len - 1];
}
}
}
}