码迷,mamicode.com
首页 > 其他好文 > 详细

第四章 分治策略 4.1 最大子数组问题 (减治法,别人的,拿来看看)

时间:2014-06-07 21:21:30      阅读:241      评论:0      收藏:0      [点我收藏+]

标签:c   style   class   blog   code   java   

bubuko.com,布布扣
/**
     * 获得连续子数组的最大和
     * 
     * @author dfeng
     * 
     */

    private static long getMax(long a, long b) {
        return a > b ? a : b;
    }

    /**
     * 获得连续子数组的最大和
     * 
     * @param array
     * @return 最大和,此处用了Long型是为了表示当参数为null或空时,可以返回null,返回其它任何数字都可能引起歧义。
     */
    public static Long getMax(int[] array) {

        if (array == null || array.length <= 0) {
            return null;
        }

        long maxSum = array[0]; // 所有子数组中最大的和
        long righteEdge = array[0]; // 右侧子数组的最大和
        for (int i = 1; i < array.length; i++) {
            // 当右侧子数组的最大和为负数时,对于新数组,右侧子数组的最大和为新增加的数。
            if (righteEdge < 0) {
                righteEdge = array[i];
            } else { // 为正数时,对于新数组,右侧子数组的最大和为新增加的数 + 原来的最大和。
                righteEdge += array[i];
            }
            // 所有子数组中最大的和
            maxSum = getMax(righteEdge, maxSum);
        }
        return maxSum;
    }

    public static void main(String[] args) {
        int[] array = { -111, -2, -3, -10, -4, -7, -2, -5 };
        System.out.println("Max sum: " + getMax(array));
    }
bubuko.com,布布扣

第四章 分治策略 4.1 最大子数组问题 (减治法,别人的,拿来看看),布布扣,bubuko.com

第四章 分治策略 4.1 最大子数组问题 (减治法,别人的,拿来看看)

标签:c   style   class   blog   code   java   

原文地址:http://www.cnblogs.com/xiaojintao/p/3774948.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!