此博客的目的仅供个人学习和分享,其实也是为了自己复习知识方便,这也是本人第一次写博客,缺乏经验,见谅见谅!该文章主要是为了求【连续】子数组之和最大并得到子数组的下标边界,使用的算法采用的是分治的思想,分治算法的思想是将一个比较复杂的问题,分解为K个规模比较小的问题,如果这些子问题还较大,难以解决,可以再把它们分成几个更小的子问题,以此类推,直至可以直接求出解为止。这就是分治策略的基本思,想这些子问题相互独立且与原问题相同,递归解决这些子问题,就可以得到原问题的解。至于这个K是多大,一般根据情况而定,类似于插入排序的算法中一般这个K为N%2,因为一旦一个问题的元素个数为2个时,我们就能很快分出大小,但此文中这个K值并不为2,它的复杂度为N*O(logN)+N。另外欢迎大家指出不足之处!
package cn.book.exercise;
import java.util.HashMap;
import java.util.Map;
/**
* @author Administrator
* 寻找最适应的算法,【连续】子数组之和最大
*/
public class FindBestSubArrayTest {
public static int[] array ={-1,2,3,4,5,6,-7,8,9,33,-888888,-99999,333333,-1,-2,9};
static Map<String, Integer> map = new HashMap<String, Integer>();
public static void main(String[] args)