分治法:求数组中最值问题

给定一个数组返回最大值。
可以遍历数组,但是时间复杂度是On
现在用分治法:时间复杂度是Ologn

或者使用Arrays先对数组进行升序排序,输出最后一个元素也行。

import java.util.Arrays;

public class maxSubstring {
	
	public static int getArrMaxDivide(Integer arr[], int strat, int end) {
		if (strat == end) {
			return arr[strat];
		}else {
			int leftMax = getArrMaxDivide(arr, strat, (end+strat) / 2);
			int rightMax = getArrMaxDivide(arr, (end+strat) / 2 + 1, end);
			return leftMax > rightMax ? leftMax : rightMax;
		}
	}
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Integer[] arr = new Integer[9];
		arr[0] = -2;
		arr[1] = 1;
		arr[2] = -3;
		arr[3] = 4;
		arr[4] = -1;
		arr[5] = 2;
		arr[6] = 1;
		arr[7] = -5;
		arr[8] = 4;
		System.out.println(getArrMaxDivide(arr, 0, arr.length-1));	
		Arrays.sort(arr);
		System.out.println(arr[arr.length-1]);

	}

}

发布了31 篇原创文章 · 获赞 3 · 访问量 878

猜你喜欢

转载自blog.csdn.net/qq_38888209/article/details/104496589