归并求解数组中最大最小数

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值