算法设计原则

本文参考MIT6006的讲座,介绍了如何理解和设计算法。首先,通过随机输入和小规模实例理解算法行为;其次,简化问题并从简单解出发解决复杂问题;接着,利用已知问题启发解新问题;最后,运用递归思想和分治策略。讨论了如何根据运行时间和空间需求优化算法,如nlogn级别的解决方案,包括二分查找和分治法的应用。
摘要由CSDN通过智能技术生成

参考 MIT6006 Recitation11, slides:http://courses.csail.mit.edu/6.006/fall11/rec/rec11.pdf

  1. 根据随机创建的输入和足够的小范例得到相应输出,根据输入输出的关系理解算法的功能
  2. 先不要考虑整天解决问题,想办法简化问题(例如对原问题添加一些限制条件),根据简单问题的解思考原问题的解决方案
  3. 找一个与原问题相近的已知问题,对已知问题做一些调整来求解原问题(很多问题可以从现有的问题中获得启发)
  4. 通过递归求解,我们可以考虑一些问题中最后一步的求解方案,再通过递归将问题完整的解决
  5. 根据要求的运行时间或者存储空间求解,例如如果要求的运行时间为 n log ⁡ n n\log n nlogn级的,那么迭代公式可以认为是以下
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值