算法分析与设计(浅入浅出)

一.算法基础

1.程序

算法:

  • 确定性:有确定步骤
  • 有限性:在规定时间内结束
  • 可行性:每个步骤都是可以操作的
  • 输入:一个程序可以有0个或多个输入
  • 输出:必须有1个或多个输出

数据结构:数据如何储存

优秀的文档

2.时间复杂度

  • 找出算法的基本语句
  • 计算基本语句的执行次数
  • 用大O记号表示算法的性能
  • 时间函数就是把时间规模函数简化为一个数量级

3.枚举 (暴力)

  • 列出有穷序列集的所有元素

4.贪心

  • 总是选当前看起来最好的原则
  • 贪心的证明

5.二分

在解的域 有一半合法 一半不合法

6.冒泡排序 o(n^2)

def bubble_sort(array):
    for i in range(1, len(array)):
        for j in range(0, len(array)-i):
            if array[j] > array[j+1]:
                array[j], array[j+1] = array[j+1], array[j]
    return array

7.快速排序 o(nlogn)

  • 首先设定一个分界值,通过该分界值将数组分成左右两部分。
  • 将大于或等于分界值的数据集中到数组右边,小于分界值的数据集中到数组的左边。
  • 对左边和右边分别排序

二.动态规划

1.性质

  • 最优子结构:一个问题的最优解包含其子问题的最优解
  • 无后效性:在某个阶段上过程的状态已知,则从此阶段以后过程的发展变化仅与此阶段的状态有关,而与过程在此阶段以前的阶段所经历过的状态无关。
  • 大量重复子问题

2.步骤

  • 定义状态
  • 寻找决策
  • 确定初值

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值