算法思想:
- 分解:将数组尽量均等分割
- 解决:当n=1时,该数即为最大元、也是最小元
- 找出元素即可,无需合并。
算法代码(java实现):
import java.util.Arrays;
public class MaxnumMinnum {
public static void searchMaxMin(int[]arr,int mm[],int low,int high){
if (high==low){
mm[0]=arr[low];
mm[1]=arr[low];
} //此为递归出口
else {
int mid = (high - low) / 2 + low;
int mml[]=new int[2];
int mmr[]=new int[2];
searchMaxMin(arr,mml,low, mid);
searchMaxMin(arr,mmr,mid + 1, high);
mm[0]=getMax (mml[0],mmr[0] );
mm[1]=getMin (mml[1],mmr[1] );
}
}
public static int getMax ( int a,int b ){
if (a>b)
return a;
else
return b;
}
public static int getMin ( int a,int b ){
if (a>b)
return b;
else
return a;
}
public static void main(String[] args){
int array[]=new int[]{8,2,2,4,5,7,9};
int n=array.length-1;
System.out.println(Arrays.toString(array));
int mm[]=new int[2];//第一个放大的,第二个放小的
searchMaxMin (array, mm,0,n);
System.out.println("max="+mm[0]);
System.out.println("max="+mm[1]);
}
}```