美文网首页
算法效率衡量

算法效率衡量

作者: 晨光523152 | 来源:发表于2019-12-02 15:48 被阅读0次

执行时间反应算法效率

实现算法程序的执行时间可以反应出算法的效率,即算法的优劣。

但是同一个程序放在不同的机器里执行,会得到不同的时间,所以不能单靠运行的时间来比较算法的优劣并不一定是客观准确的!

虽然每台机器执行的总时间不同,但是执行基本运算数量大体相同。

所以用执行基本运算数量来判断算法效率

时间复杂度与“大0记法”

时间复杂度:假设存在函数g,使得算法A处理规模为n的问题示例所用时间为T(n)=O(g(n)),则称O(g(n))为算法A的渐进时间复杂度,简称时间复杂度,记为T(n)。

对于算法进行特别具体的细致分析虽然很好,但在实践中的实际价值有限。对于算法的时间性质和空间性质,最重要的是其数量级和趋势,这些是分析算法效率的主要部分。(而计量算法基本操作数量的规模函数中那些常量因子可以忽略不记。)

最坏复杂时间度

分析算法时,存在几种可能的考虑:

  • 算法完成工作最少需要多少基本操作,即最优时间复杂度(没有参考价值)
  • 算法完成工作最多需要多少基本操作,即最坏时间复杂度(提供了一种保证,表明算法在此中程度的基本操作中一定能完成工作)
  • 算法完成工作平均需要多少基本操作,即平均时间复杂度(对算法的一个全面评价,完整全面的反映了这个算法的本质。但是这种衡量没有保证,不是每个计算都能在这个基本操作内完成。而且,对于平均情况的计算,也会因为应用算法的实例分布可能不均匀而难以计算)

时间复杂度的几条基本运算规则

  • 基本操作,即只有常数项,认为其时间复杂度为\mathcal{O}(1)
  • 顺序结构,时间复杂度按加法进行
  • 循环结构,时间复杂度按乘法进行
  • 分支结构,时间复杂度取最大值
  • 判断一个算法的效率时,往往只需要关注数量的最高次项,其它次要项和常数项可以忽略
  • 在没有特殊说明时,我们分析的算法时间复杂度都是指最坏时间复杂度

常见时间复杂度

执行次数函数举例 非正式术语
12 \mathcal{O}(1) 常数阶
2n + 3 \mathcal{O}(n) 线性阶
3n^{2} + 2n + 1 \mathcal{O}(n^{2}) 平方阶
5log_{2}n + 20 \mathcal{O}(logn) 对数阶
2n + 3nlog_{2}n + 19 \mathcal{O}(nlogn) nlogn
6n^{3} + 2n^{2} + 3n + 4 \mathcal{O}(n^{3}) 立方阶
2^{n} \mathcal{O}(2^{n}) 指数阶

note: 经常将log_{2}n简写成logn

所消耗的时间从小到大:
\mathcal{O}(1) < \mathcal{O}(logn) < \mathcal{O}(n) < \mathcal{O}(nlogn) < \mathcal{O}(n^{2}) < \mathcal{O}(n^{3}) < \mathcal{O}(2^{n}) < \mathcal{O}(n!) < \mathcal{O}(n^{n})

参考资料:https://www.bilibili.com/video/av53583801?p=5

相关文章

  • 算法效率衡量

    执行时间反应算法效率 实现算法程序的执行时间可以反应出算法的效率,即算法的优劣。 但是同一个程序放在不同的机器里执...

  • 6基础算法之冒泡,插入,选择排序

    如何分析一个“排序算法”? 排序算法的执行效率 对于排序算法执行效率的分析,我们一般会从这几个方面来衡量: 最好情...

  • 软件设计师16-数据结构02(排序/查找)

    排序 1 衡量排序算法质量 1)时间效率:排序速度 2)空间效率:占内存辅助空间的大小 3)稳定性:相...

  • 算法的时间复杂度与空间复杂度

    概述 执行效率是考量一个算法是否高效的主要指标。然而时间、空间复杂度又是衡量算法执行效率的主要维度 一、事后统计法...

  • 算法1:概述与排序算法

    1.概述 1.1 简介 1.2 算法效率的衡量 1.2.1 时间复杂度 1.2.2 空间复杂度: 1.3 常见...

  • 时间复杂度

    解决同一个问题的多种方法的好坏区分? 执行效率是算法一个非常重要的考量,如何衡量一个算法的执行效率呢?数据结构和算...

  • 2018-06-24算法效率衡量

    数据结构和算法:兵法!开发人员必备基本功有了算法,能达到事半功倍的效果 枚举法:一个一个数去试 算法的五大特性 输...

  • 第三节-复杂度分析(上)

    一、是什么:衡量算法代码的执行效率的方法 二、地位:数据结构和算法学习的精髓 三、解决了什么问题:在设计程序、编码...

  • o(logn^2)的冒泡、插入、选择排序

    最常见的排序算法时间复杂度的比较: 时间复杂度 如何衡量一个排序算法的指标 1.执行效率: 包括最好、最坏、平均的...

  • 算法的时间复杂度分析

    时间复杂度的定义 一个好的算法往往可以使程序运行的更快,衡量一个算法的好坏往往将算法效率和存储空间作为重要依据。算...

网友评论

      本文标题:算法效率衡量

      本文链接:https://www.haomeiwen.com/subject/clhgwctx.html