zoukankan      html  css  js  c++  java
  • 数据结构——算法的基本概念

      算法——算法是解决特定问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每条指令表示一个或多个操作。如果说数据结构只是一些数据的组合,没有什么实际意义,那么算法就是这些数据的灵魂。

    一、算法的特性

      算法具有输入、输出、有穷性、确定性和可行性五个特征。

        (1)输入输出——算法具有零个或者多个输入,至少有一个或者有多个输出。

        (2)有穷性——指算法在执行有限的步骤后,自动结束而不会出现无限循环,并且每一个步骤在可接受的额时间内完成。还指算法在人们可以接受的时间范围内有穷

          在数学逻辑上有穷是无效的,因为不符合现实。

        (3)确定性——算法的每一个步骤都具有确定的含义,不会出现二义性。算法在一定的条件下,只有一条执行路径。

        (4)可行性——算法的每一步都必须是可行的,也就是说,每一步都能够通过执行有限次数完成。

    二、算法设计的要求

      算法的特性可以说一个算法的基本要求,满足以上特性才能算一个有效的算法,那么满足一下要求,才能算是一个优秀的算法

        (1)正确性——指算法至少因该具有输入、输出和加工处理无歧义性、能正确反应问题的需求、能够够得到问题的正确答案。正确性大致分为以下四个层次

      • 算法程序没有语法错误。
      • 算法程序对于合法的输入数据能够得出满足要求的输出结果。
      • 算法程序对于非法的输入数据能够得出满足规格说明的结果。
      • 算法程序对于精心选择的,甚至刁难的测试都有满足要求的输出结果

        以上四个层次依次递增,前三个层次可以达到,第四个层次达到比较难,所以一般情况下把层次三作为一个算法是否正确的标准。

         (2)可读性——算法设计的另一目的就是为了便于阅读、理解和交流。

        成熟的代码可以方便别人进行阅读和理解,一个算法写的再好,以后自己都看不懂了,就不是一个好的算法。 

        (3)健壮性——当输入数据不合法时,算法也能做出相关处理,而不是产生异常或莫名其妙的结果。

        (4)效率性——是指时间效率高和存储量低,这样才是一个高效率的算法。     

  • 相关阅读:
    第七节:Asp.Net Core内置日志、将EF生成的SQL输出到控制台
    自学Zabbix3.6.2-触发器triggers severity严重程度
    自学Zabbix3.6.1-触发器triggers创建
    自学Zabbix3.5.7-监控项item-Applications
    自学Zabbix3.5.6-监控项item-Value mapping值映射
    自学Zabbix3.5.5-监控项item-User parameters(自定义key)
    自学Zabbix3.5.4-监控项item-History and trends
    自学Zabbix3.5.3-监控项item-zabbix agent 类型所有key
    自学Zabbix3.5.2-监控项item-types监控类型
    自学Zabbix3.5.1-监控项item-key介绍
  • 原文地址:https://www.cnblogs.com/Smilodon/p/3118055.html
Copyright © 2011-2022 走看看