zoukankan      html  css  js  c++  java
  • 时间复杂度和空间复杂度分析

    1.算法的时间复杂度分析:

        假设一个算法是由n条指令序列所构成的集合,则:

        算法的执行时间=sum^{n}_{i=1} x_i(指令序列(i)的执行次数*单个序列(i)的执行时间)

        算法的执行时间与指令序列的执行次数之和成正比(单个序列的执行时间大约相同)。通过计算程序中语句频度之和估算一个算法的执行时间,所以语句频度就是语句重复执行的次数。

       时间复杂度T(n)=O( 算法中所有语句的执行次数的和)

        最好,最坏和平均时间复杂度。


    2.算法的空间复杂度分析:

        程序运行所需的存储空间包括两部分。

        (1)固定空间需求:主要包括算法本身的程序代码,常量,变量所占的空间;

        (2)可变空间需求:与所处理问题的规模有关。主要包括输入的数据元素所占的存储空间和程序运行过程中所需要的额外空间。

        由于固定空间基本由问题的规模决定,所以在计算算法的空间复杂度时,主要考虑程序运行过程中的额外空间。

    时间复杂度和空间复杂度是评价算法优缺点的重要指标!!!

     大O符号是由德国数论学家保罗·巴赫曼(Paul Bachmann)在其1892年的著作《解析数论》(Analytische Zahlentheorie)首先引入的。而这个记号则是在另一位德国数论学家艾德蒙·朗道(Edmund Landau)的著作中才推广的,因此它有时又称为朗道符号(Landau symbols)。代表“order of ...”(……阶)的大O,最初是一个大写的希腊字母'Ο'(omicron),现今用的是大写拉丁字母O’,但从来不是阿拉伯数字‘0’

    空间复杂度(Space Complexity)是对一个算法在运行过程中临时占用存储空间大小的量度,记做S(n)=O(f(n))。比如直接插入排序时间复杂度是O(n^2),空间复杂度是O(1) 。而一般的递归算法就要有O(n)的空间复杂度了,因为每次递归都要存储返回信息。一个算法的优劣主要从算法的执行时间和所需要占用的存储空间两个方面衡量
     
    中文名
    空间复杂度
    外文名
    space complexity

        

  • 相关阅读:
    CSS display:none和visibility:hidden区别
    Eclipse 开发版本选择
    JavaScript 三种弹出框
    jstree的数据后台生成
    C# Enum,Int,String的互相转换 枚举转换
    JS 异常: Uncaught RangeError: Maximum call stack size exceeded
    JS中encodeURI,escape,encodeURIComponent区别
    安卓Android手机系统内文件夹目录解释
    jquery操作select(取值,设置选中)
    单例/单体模式(Singleton)
  • 原文地址:https://www.cnblogs.com/cenmny/p/6763302.html
Copyright © 2011-2022 走看看