算法设计与分析第二章作业
1.伪代码如下:
int maxSum(int *nums,int left,int right){
if(left==right)return nums[left];
int mid=(left+right)/2;
int lsum,rsum;
lsum = maxSum(nums,left,mid);
rsum = maxSum(nums,mid+1,right);
int s1=0,s2=0;
int temp=0;
for(int i=mid;i>=left;i++){
temp+=nums[i];
if(s1<temp)s1=temp;
}
temp=0;
for(int i=mid+1;i<=right;i++){
temp+=nums[i];
if(s2<temp)s2=temp;
}
int msum = s1+s2;
return max(max(lsum,rsum),msum);
2.时间复杂度为O(nlogn)
3.分治算法的思路是将大问题分解成若干个子问题最后合并,能大大提高算法效率,其中递归的思想尤为重要。
...全文