王道考研数据结构笔记之算法分析

算法的基本概念

算法是对特定问题求解步骤的一种描述,它是指令的有限序列。具有下列五个重要特性:

  • 有穷性:一个算法必须在有限的步骤结束,每一步都有在又穷的时间内结束
  • 确定性:相同的输入只能得到相同的输出
  • 可行性:可以被执行的操作
  • 输入:有零个或多个输入
  • 输出:有一个或多个输出

一个好的算法应该达到一下目标:

  • 正确性:能够正确解决问题
  • 可读性:具有良好的可读性,帮助别人理解
  • 健壮性:输入非法数据,能够正确处理
  • 效率与低存储量需求:尽量少的时间和空间
算法效率的度量
1、时间复杂度

一个语句的频度是指该语句在算法中被重复执行的次数。算法中所有语句的频度之和记为T(n)。时间复杂度主要分析T(n)的数量级。算法中基本运算(最深层循环内的语句)的频度记为f(n),因此时间复杂度记为:

T(n)=O(f(n))

分析一个程序的时间复杂性时,有以下两条规则:

a) 加法规则
T(n)=T1(n) + T2(n) = O(f(n)) + O(g(n)) = O(max(f(n),g(n)))
b)乘法规则
T(n) = T1(n) * T2(n) = O(f(n)) * O(g(n)) = O(f(n) * g(n))
常见的时间复杂度
O(1)<O(log(n))<O(n)<O(nlog(n))<O(n * n)<O(n * n * n)

2、空间复杂度

空间复杂度**S(n)**定义为该算法所耗费的存储空间。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值