【发布时间】:2016-05-07 15:13:15
【问题描述】:
所以我正在尝试编写一个递归算法来找到数组的最小值和最大值。它基本上将数组分成两个 n/2 部分,并递归地找到最小值和最大值。这是我现在拥有的:
class MinMax{
public static Pair mmA(int lb, int ub, int[] a){
int min;
int max;
int mid;
if (ub == lb){
return mmA(lb, ub, a);
} else {
mid = (lb + ub)/2;
mmA (lb, mid, a);
max = mid;
mmA (mid+1, ub, a);
min = mid;
if (a[max] > a[min]){
return mmA(lb, max, a);
} else
return mmA(min, ub, a);
}
}
public static void main(String[]args){
int[] a = {4, 3, 5, 6, 7, 9, 1};
mmA(0, 6, a);
}
}
问题是该方法不是 int 方法,所以我不能只说 max = mmA(lb, mid, a) 因为 mmA 是 Pair 方法,而 max 是 int。我也不能只制作 Max 和 Min 配对对象,因为那样你最终将无法比较它们。这是pair类:
class Pair {
int alpha; // the smaller one
int omega; // the bigger one
Pair ( int a, int o ) { alpha = a; omega = o; }
}
那么我怎样才能使用这个对类以及我的方法来找到最小值和最大值。
【问题讨论】:
-
如果你不介意我问,当你能得到 O(n) 中的最小值和最大值时,你为什么要这样做?
-
这是桶排序算法的相关(部分)吗?
-
更新了答案。请看一下