分析算法

本文深入探讨了算法分析的过程,特别是在随机访问机模型下评估算法效率的方法。文章详细解释了基本操作计数、最佳和最坏情况分析的重要性,并讨论了算法运行时间的增长量级对于选择高效算法的关键作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

分析算法

  • 在分析算法的过程中,通常我们想度量的是计算时间。
  • 我们算法的分析,都假定一种通用的单处理器计算模型——随机访问机(random-access machine, RAM),没有并发操作
  • RAM 模型包含真实计算机中常见的指令:算术指令、数据移动指令和控制指令。每条这样的指令所需时间都为常量。

过程 INSERTION-SORT 需要的时间依赖于输入,不仅指的是输入的数目,也依赖于它们已被排序的程度

一个算法在特定输入上的运行时间是指执行的基本操作数或步数。

我们假定:执行每行伪代码需要常量时间,即第 i 行的每次执行需要时间常量 Ci;

for j = 2 to A.length                                   c1      n
    key = A[j]                                          c2      n-1
    // Insert A[j] into the sorted sequence A[1..j-1].  0       n-1 
    i = j-1                                             c4      n-1
    while i > 0 and A[i] > key                          c5      sum(t_j, j=2, n)
        A[i+1] = A[i]                                   c6      sum(t_j-1, j=2, n)
        i = i -1                                        c7      sum(t_j-1, j=2, n)
    A[i+1] = key                                        c8      n-1

所有运行的时间:
在这里插入图片描述
最佳的运行情况:
在这里插入图片描述
我们可以将该运行时间表示为 an+b;它是 n的线性函数。
最坏情况:
在这里插入图片描述
它是n的二次函数;

最坏情况和平均情况分析

往往我们集中于只求最坏情况运行时间,理由有三:

  • 可以给出一个上界;
  • 最坏情况经常出现;
  • “平均情况”往往与最坏情况一致一样差。

增长量级

我们真正感兴趣的是运行时间的增长率或增长量级。
如果一个算法的最坏情况运行时间具有比另一个算法更低的增长量级,那么我们通常认为前者比后者更有效

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值