Algorithm 需要帮助返回索引最大序列算法吗

Algorithm 需要帮助返回索引最大序列算法吗,algorithm,indices,divide-and-conquer,subsequence,Algorithm,Indices,Divide And Conquer,Subsequence,我有下面的算法,它返回数组中最大子序列的和。最大的总和是在左半部,右半部分,或在中间的分划和征服…如果通过中间,我可以返回索引。但是如果子序列在数组的左半部分或右半部分,我不知道它们会是什么,这有点让人困惑。如果需要,我可以在方法之外定义索引变量。方法如下: private static int maxSumRec( int [ ] a, int left, int right ) { int maxLeftBorderSum = 0, maxRightBorderSum = 0;

我有下面的算法,它返回数组中最大子序列的和。最大的总和是在左半部,右半部分,或在中间的分划和征服…如果通过中间,我可以返回索引。但是如果子序列在数组的左半部分或右半部分,我不知道它们会是什么,这有点让人困惑。如果需要,我可以在方法之外定义索引变量。方法如下:

 private static int maxSumRec( int [ ] a, int left, int right )
{
    int maxLeftBorderSum = 0, maxRightBorderSum = 0;
    int leftBorderSum = 0, rightBorderSum = 0;
    int center = ( left + right ) / 2;

    if( left == right )  // Base case
        return a[ left ] > 0 ? a[ left ] : 0;

    int maxLeftSum  = maxSumRec( a, left, center );
    int maxRightSum = maxSumRec( a, center + 1, right );

    for( int i = center; i >= left; i-- )
    {
        leftBorderSum += a[ i ];
        if( leftBorderSum > maxLeftBorderSum )
            maxLeftBorderSum = leftBorderSum;
    }

    for( int i = center + 1; i <= right; i++ )
    {
        rightBorderSum += a[ i ];
        if( rightBorderSum > maxRightBorderSum )
            maxRightBorderSum = rightBorderSum;
    }

    return max3( maxLeftSum, maxRightSum,
                 maxLeftBorderSum + maxRightBorderSum );
}

我相信我找到了解决方案,不管怎样,我能告诉maxLeftSum和maxRightSum是否返回数组一半的和,而不是最大序列吗?