《Hello算法》之迭代与递归

算法效率评估

在能够解决问题的前提下,算法效率已成为衡量算法优劣的主要评价指标。主要包括以下两个维度。
时间效率:算法运行速度的快慢(即算法运行时间的长短)。
空间效率:算法占用内存空间的大小。
目标是设计 “既快又省” 的数据结构与算法。

效率评估方法

1、实际测试
给定两种算法,在计算机上分别运行它们,记录时间和空间使用情况。
缺陷

  • 难以排除测试环境的干扰因素。不同的测试环境可能会得到相反的结果。
  • 展开完整测试非常消耗资源。完整测试需要在不同数据量下开展,非常浪费资源。
    2、理论估算
    复杂度分析(complexity analysis) 描述了随着输入数据大小的增加,算法执行所需时间和空间的增长趋势。
  • “时间和空间资源”分别对应时间复杂度(time complexity)空间复杂度(space complexity)
  • “随着输入数据大小的增加”意味着复杂度反映了算法运行效率与输入数据体量之间的关系
  • “时间和空间的增长趋势”表示复杂度分析关注的不是运行时间或占用空间的具体值,而是时间或空间增长的快慢
    复杂度分析相对于实际测试的优点
  • 仅需理论分析,绿色节能。
  • 独立于运行环境,适用于各类平台。
  • 能够体现不同数据量下的算法效率。

迭代

迭代(iteration):在满足特定条件下重复执行某段代码,直到该条件不再满足。

迭代实现方式

  • for循环
    for循环适合预先知道迭代次数时使用。例求解1到n之和:
def for_loop(n:int)->int:
   """ for循环"""
   res = 0
   # 循环求和1,2,...,n-1,n
   for i in range(1, n+1): # range(a,b)是左闭右开区间[a,b),故此处是n+1.
       res += i
   return res
# 输出
res_for = for_loop(5)
print("for_loop:", res_for)
# for_loop: 15
  • while循环
    while循环与for循环类似,在while循环中,程序每轮都会先检查条件,如果条件为真则继续执行,否则就结束循环。求和代码如下
def while_loop(n:int)->int:
   """ while循环"""
   res = 0
   i = 1  # 初始化条件变量
   while i <= n:
       res += i  # 累加
       i += 1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值