可以用分治的思想,每次返回最大的前两个值,最后比较返回的四个值,从中找出第二大的
public static void main(String[] args) {
//扩展问题 用分治的思想
int[] num2 = searchSecondMax2(arry,0,arry.length-1);
System.out.println("数组中第二大的数:"+num2[0]);
}
private static int[] searchSecondMax2(int[] arry, int begin, int end) {
int[] result = new int[2];
if(end-begin <=1){//result中由小到大排
if(arry[begin]<arry[end]){
result[0]=arry[begin];
result[1]= arry[end];
return result;
}else{
result[0] = arry[end];
result[1] = arry[begin];
return result;
}
}
int mid = (begin+end)/2;
int[] result_left = searchArrayMaxMin(arry,begin,mid);
int[] result_right =searchArrayMaxMin(arry,mid+1,end);
if(result_left[1]>result_right[1]){
if(result_left[0]<result_right[1]){
result[0]= result_right[1];
}else{
result[0]= result_left[0];
}
}else{
if(result_left[1]>result_right[0]){
result[0]= result_left[1];
}else{
result[0]= result_right[0];
}
}
return result;
}