您的位置:首页 > 编程语言

编程之美2.10 寻找数组中的最大值和最小值

2016-12-06 09:15 337 查看
//思路:分治思想。分别求出前后N/2个数的Min和Max。
import java.util.Scanner;

public class BeautyPro210 {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scanner = new Scanner(System.in);
while (scanner.hasNext()) {
int n = scanner.nextInt();
int[] arr = new int
;
for (int i = 0; i < n; i++) {
arr[i] = scanner.nextInt();
}
int[] result = searchMinMax(arr, 0, n - 1);
System.out.println(result[0]);
System.out.println(result[1]);
}
}

public static int[] searchMinMax(int[] arr, int low, int high) {
int[] result = new int[2];
if (high - low <= 1) {
if (arr[low] <= arr[high]) {
result[0] = arr[low];
result[1] = arr[high];
return result;
} else {
result[0] = arr[high];
result[1] = arr[low];
return result;
}
}
int[] leftMinMax = searchMinMax(arr, low, low + (high - low) / 2);
int[] rightMinMax = searchMinMax(arr, low + (high - low) / 2 + 1, high);
if (leftMinMax[0] < rightMinMax[0]) {
result[0] = leftMinMax[0];
} else {
result[0] = rightMinMax[0];
}
if (leftMinMax[1] < rightMinMax[1]) {
result[1] = rightMinMax[1];
} else {
result[1] = leftMinMax[1];
}
return result;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  编程之美