算法分析与设计作业——
用分治法设计一个算法,在数组A中寻找最大元素和最小元素
public class b1113 {
static int min=Integer.MAX_VALUE;
static int max=Integer.MIN_VALUE;
public static void main(String[] args) {
int[] a={88,183,522,374,5,33224,5,12,7,847,96};
mm(a,0,a.length-1);
System.out.println("min:"+min+",max:"+max);
}
public static void mm(int[] a,int i,int j){
if(i>j)
return;
//只剩1个数
if(i==j){
min=Math.min(min,a[i]);
max=Math.max(max,a[i]);
return;
}
//只剩2个数
if(i==j-1){
max=Math.max(max,Math.max(a[i],a[j]));
min=Math.min(min,Math.min(a[i],a[j]));
return;
}
//大于2个数
else{
int mid=(i+j)/2;
mm(a,i,mid);
mm(a,mid+1,j);
}
}
}