打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Algorithm:C++语言实现之求最大连续子数组(暴力法、分治法、分析法、动态规划法)

Algorithm:C++语言实现之求最大连续子数组(暴力法、分治法、分析法、动态规划法)


求最大连续子数组

给定一个数组A[0,…,n-1],求A的连续子数组,使得该子数组的和最大。
例如,数组: 1, -2, 3, 10, -4, 7, 2, -5;最大子数组:3, 10, -4, 7, 2

T1、code暴力法  O(n3)

时间复杂度O(n3)

T2、分治法   O( n*log(n) )

将数组从中间分开,那么最大子数组要么完全在左半边数组,要么完全在右半边数组,要么跨立在分界点上。
完全在左数组、右数组递归解决。
跨立在分界点上:实际上是左数组的最大后缀和右数组的最大前缀的和。因此,从分界点向前扫,向后扫即可。
分治算法复杂度



T3、分析法   O(n)

逻辑推理的算法应用

T4、动态规划法  O(n)

记S[i]为以A[i]结尾的数组中和最大的子数组则:S[i+1] = max(S[i]+A[i+1], A[i+1])
S[0]=A[0]
遍历i: 0≤i ≤n-1
动态规划:最优子问题
时间复杂度:O(n)

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
剑指offer(C++)-JZ69:跳台阶(算法-动态规划)
30 个重要数据结构和算法完整介绍(建议收藏保存)
【小Y学算法】⚡️每日LeetCode打卡⚡️——17.最大子序和
一文讲透【递归】与【动态规划】!
排序算法
BAT面试算法进阶(10)- 最长的斐波那契子序列的长度(暴力法)
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服