1.首先将序列a[1:n]分成长度相等的两段a[1:n/2]和a[n/2+1:n];
2.确定mid=(left+right)/2,并通过递归算法求得左右两区域(即[left,mid]和[mid+1,right]两个区域)的子段和;
3.将两个区域求出的和相加并与二者比较,较大为序列最大字段;
具体代码如下:
因为 分解子问题O(1),求解子问题2T(n/2),合并子问题O(n)
通过主定理计算最大子段和的时间复杂度是O(nlogn)
434
社区成员
1,011
社区内容
加载中
试试用AI创作助手写篇文章吧