public class findMaxMin {
public static void main(String[] args) {
int[] Max = new int[2];//由于Java 值传递 的原因,改为数组
int[] Min = new int[2];
int a[] = { 0, 1, 3, 4, 5, 6, 7, 2, 4, 19, 45, 23 };// 不用0位置
new findMaxMin().findMaMi(a, Max, Min, 1, 11);
System.out.println("Max=" + Max[1] + " Min=" + Min[1]);
}
public void findMaMi(int[] a, int[] Max, int[] Min, int l, int r) {
if (l == r) {// 只有一个元素,大小值一样
Max[1] = Min[1] = a[r];
} else {
if (l == r - 1) { // 只有两个元素
if (a[l] > a[r]) {
Max[1] = a[l];
Min[1] = a[r];
} else {
Max[1] = a[r];
Min[1] = a[l];
}
} else {// 有多个元素
int hMax[] = { 0, 0 };
int hMin[] = { 0, 0 };
int m = (r + l) / 2;
findMaMi(a, hMax, hMin, l, m);
findMaMi(a, Max, Min, m + 1, r);
if (hMax[1] >= Max[1]) {
Max[1] = hMax[1];
}
if (Min[1] >= hMin[1]) {
Min[1] = hMin[1];
}
}
}
}
}
分治法 求最大元和最小元 Java语言
最新推荐文章于 2020-12-20 13:33:27 发布