首页 > 编程语言 >算法与算法分析—时间复杂度、空间复杂度

算法与算法分析—时间复杂度、空间复杂度

时间:2022-10-23 01:11:15浏览次数:52  
标签:语句 复杂度 算法 时间 频度 空间 效率

算法与算法分析

  • 算法的定义

    对特定问题求解方法和步骤的一种描述,它是指令的有限序列。其中每个指令表示一个或多个操作。

  • 算法的描述

    • 自然语言:英语、中文(麻烦)

    • 流程图:传统流程图(框图)——开始结束用圆角矩形,输入输出用平行四边形,操作用矩形,判断用菱形

      NR流程图(盒图)

    • 伪代码:类语言——类C语言

    • 程序代码:C语言程序、Java语言程序

       

  • 算法与程序

    • 算法是解决问题的一种方法或一个过程,考虑如何将输入转换成输出,一个问题可以有多种算法

    • 程序是用某种程序设计语言对算法的具体实现

      程序=数据结构+算法
      数据结构通过算法实现操作
      算法根据数据结构设计程序

       

  • 算法特性:一个算法必须具备以下五个重要特性

    • 有穷性:一个算法必须总是在执行有穷步之后结束,且每一步都在有穷时间内完成

    • 确定性:算法中每一条指令必须有确切的含义,没有二义性,在任何条件下,只有唯一的一条执行路径,即对于相同的输入只能得到相同的输出

    • 可行性:算法是可执行的,算法描述的操作可以通过已经实现的基本操作执行有限次来实现

    • 输入:一个算法有零个或多个输入

    • 输出:一个算法有一个或多个输出

  • 算法设计的要求

    • 正确性

    • 可读性

    • 健壮性

    • 高效性

  • 算法效率

    1. 时间效率

    2. 空间效率

      • 时间效率和空间效率有时候是矛盾的,需要结合具体要求综合的平衡考虑

         

  • 算法效率度量

    • 事前分析: 算法运行时间=∑每条语句的执行次数(语句频度)*该语句执行一次所需时间

      • 算法时间复杂度

        T(n)=2n³+3n²+n+1

      当n->∞ 时 得到f(n)=n³ T(n)=O(n³)

      算法的渐进时间复杂度:T(n)=O(f(n)) (O是数量级的符号)

      1. 找出语句频度最大的那条语句作为基本语句

      2. 计算基本语句的频度得到问题规模n的某个函数f(n)

      3. 取其数量级用符号O表示

      4. 时间复杂度是由嵌套最深层语句的频度决定的

      5. 直接看循环体更简单

        x=0;
        y=0;
        for(int k=0;k<n;k++)          //n+1
            x++;                      //n
        for(int i=0;i<n;i++)           //n+1         
            for(int j=0;j<n;j++)      //n*(n+1)      n*n f(n)=n*n
                y++;                 //n*n

         

         1 i=1;
         2 while(i<=n)
         3     i=i*2;         
         4 /*i=2 
         5  i=2*2
         6  i=2*2*2
         7  ……
         8  i=2^x
         9  执行次数x
        10  i<=n 则 2^x<=n
        11  x<=log2^n
        12  f(n)=x=log2^n
        13  T(n)=O(log2^n) 或O(logn)
        14  */

         

         
         
      6. 最坏时间复杂度

      7. 平均时间复杂度

      8. 最好时间复杂度

        • 算法空间复杂度

          将一维数组a中的n个数逆序存放到原数组中

          1 for(i=0;i<n/2;i++){
          2     t=a[i];
          3     a[i]=a[n-i-1];
          4     a[n-i-1]=t;
          5 }  // S(n)=O(1) 原地工作

           

          1 for(i=0;i<n;i++)
          2     b[i]=a[n-i-1];
          3 for(i=0;i<n;i++)
          4     a[i]=b[i]; // S(n)=O(n)

           

    • 事后分析:将算法实现去测算

      缺点:依赖于计算机软硬件等环境因素影响

标签:语句,复杂度,算法,时间,频度,空间,效率
From: https://www.cnblogs.com/hsxzti/p/16817746.html

相关文章

  • 【乌鸦算法】基于多段扰动共享型乌鸦算法求解单目标优化问题含Matlab代码
    ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。......
  • 实验一:决策树算法实验
    【实验目的】理解决策树算法原理,掌握决策树算法框架;理解决策树学习算法的特征选择、树的生成和树的剪枝;能根据不同的数据类型,选择不同的决策树算法;针对特定应用场景及......
  • 力扣 (LeetCode)算法入门——Day1
    704.二分查找题目:给定一个n个元素有序的(升序)整型数组nums和一个目标值target ,写一个函数搜索nums中的target,如果目标值存在返回下标,否则返回-1。classSolut......
  • ArcGIS中空间校正后不能保存的处理
    在ArcGIS中,对于位置差距很大的数据(独立坐标系),要将其校正到统一的坐标系(80、2000)上,很多时候选取了关联点后,不能校正或不能保存,应注意以下几点:1、原shp格式先去掉坐标系导入......
  • 数据结构与算法系列二之链表、哈希表及栈
    第四章链表21、删除倒数第k个节点题目:如果给定一个链表,请问如何删除链表中的倒数第k个节点?假设链表中节点的总数为n,那么1≤k≤n。要求只能遍历链表一次。例如,输入下图1......
  • 【算法思路】生成验证码
    Stringdatas="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";Stringresult="";for(inti=0;i<6;i++){......
  • 实验一:决策树算法实验
    【实验目的】理解决策树算法原理,掌握决策树算法框架;理解决策树学习算法的特征选择、树的生成和树的剪枝;能根据不同的数据类型,选择不同的决策树算法;针对特定应用场景及......
  • Spring读取JDBC数据源,读取properties文件,开新的命名空间
    1.以下是Spring配置连接Mysql的Druid数据源的xml配置。<?xmlversion="1.0"encoding="UTF-8"?><beansxmlns="http://www.springframework.org/schema/beans"x......
  • 算法导论 第四版 电子书 pdf
    链接:算法导论第四版  在有关算法的书中,有一些叙述非常严谨,但不够全面;另一些涉及了大量的题材,但又缺乏严谨性。本书将严谨性和全面性融为一体,深入讨论各类算法,并着力......
  • 多径信道下通过LMS均衡算法提高通信质量
    目录​​一、理论基础​​​​二、核心程序​​​​三、仿真测试结果​​作者ID:fpga和matlab擅长技术:1.无线基带,无线图传,编解码2.机器视觉,图像处理,三维重建3.人工智......