class Main {
public class MaxMain {
private int max;
private int min;
public MaxMain(int max, int min) {
this.max = max;
this.min = min;
}
public int getMax() {
return max;
}
public int getMin() {
return min;
}
}
public static void main(String[] args) {
new Main().test();
}
public MaxMain getMaxMin(int[] a, int began, int end) {
if (end - began <= 1) {
return a[began] <= a[end] ? new MaxMain(a[end], a[began]) : new MaxMain(a[began], a[end]);
} else {
int mid = began + (end - began) / 2;
MaxMain left = getMaxMin(a, began, mid);
MaxMain right = getMaxMin(a, mid, end);
int max = 0;
int min = 0;
max = left.getMax() >= right.getMax() ? left.getMax() : right.getMax();
min = left.getMin() <= right.getMin() ? left.getMin() : right.getMin();
return new MaxMain(max, min);
}
}
public void test() {
int[] a = {11, 9, 20, 56, 42, 3, 7, 15, 16};
System.out.print("序列为:");
for (int arrays : a) {
System.out.print(arrays + " ");
}
System.out.println();
MaxMain result = getMaxMin(a, 0, a.length - 1);
System.out.println("最大值:" + result.getMax());
System.out.println("最小值:" + result.getMin());
}
}