重读《Programming Pearls》之八:Algorithm Design Techniques

Problem——最大子序列和:

Find the maximum sum in any contiguous subvector of a vector of n numbers.

扩展问题:最大子矩阵和

 

 

最大子序列和的解法:

Brute Force: O(n^3)

 

 

The Quadratic Algorithms(Dynamic Programming/Memory Searching): O(n^2)

 

 

Divide-and-Conquer Algorithm: O(n log n)

 

 

 

A Scanning Algorithm(Greedy Algorithm): O(n)

 

 

 

 

Principles:

Algorithms design techiques:

1、Save state to avoid recomputation保存状态(空间换时间)

2、Preprocess infomation into data structure预处理

3、Divide-and-Conquer algorithm分治

4、Sanning algorithm贪心

5、Cumulatives(Table)打表

6、Lower bounds。证明自己的算法的复杂度不可能再低(达到下限)

 

 

What Does It Matter?——时间复杂度的影响

 

时空复杂度的估计:

参考

http://baike.baidu.com/view/104946.htm

http://baike.baidu.com/view/540497.htm

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值