MaxAndMin.java代码如下:
运行结果:
package com.interview.algorithm;
public class MaxAndMin {
public static void main(String[] args) {
double[] test = {1,2,3,4,5,6,7,8,9,0,11,24,-2,-3,-4,-6,2,3};
double[] result = findMaxAndMin(test);
System.out.println(result[0]);
System.out.println(result[1]);
}
public static double[] findMaxAndMin(double [] arr){
double [] doubleArr = new double[2];
if(arr.length==2){
doubleArr[0] = arr[0]>arr[1]?arr[0]:arr[1];
doubleArr[1] = arr[0]>arr[1]?arr[1]:arr[0];
return doubleArr;
}else{
double [] leftArr ;
double [] rightArr ;
int len = arr.length;
if((len/2)%2==1){
leftArr = new double[len/2-1];
rightArr = new double[len/2+1];
for(int i=0;i<len/2-1;i++){
leftArr[i] = arr[i];
}
for(int i=len/2-1;i<len;i++){
rightArr[i-(len/2-1)] = arr[i];
}
}else{
leftArr = new double[len/2];
rightArr = new double[len/2];
for(int i=0;i<len/2;i++){
leftArr[i] = arr[i];
rightArr[i] = arr[i+len/2];
}
}
double[] left = findMaxAndMin(leftArr);
double[] right = findMaxAndMin(rightArr);
double [] result = new double[2];
result[0] = left[0]>right[0]?left[0]:right[0];
result[1] = left[1]<right[1]?left[1]:right[1];
return result;
}
}
}
运行结果:
24.0
-6.0