衡量算法好坏的五大标准是什么

衡量算法好坏的五大标准:1、时间复杂度;2、空间复杂度;3、正确性;4、可读性;5、健壮性。时间复杂度是指,执行算法所需要的计算工作量,这是一个代表算法输入值的字符串的长度的函数。

衡量算法好坏的五大标准是什么-Worktile社区

1、时间复杂度

在计算机科学中,时间复杂性,又称时间复杂度,算法的时间复杂度是一个函数,它定性描述该算法的运行时间。这是一个代表算法输入值的字符串的长度的函数。时间复杂度常用大O符号表述,不包括这个函数的低阶项和首项系数。使用这种方式时,时间复杂度可被称为是渐近的,亦即考察输入值大小趋近无穷时的情况。

为了计算时间复杂度,我们通常会估计算法的操作单元数量,每个单元运行的时间都是相同的。因此,总运行时间和算法的操作单元数量非常多相差一个常量系数。

相同大小的不同输入值仍可能造成算法的运行时间不同,因此我们通常使用算法的最坏情况复杂度,记为T(n),定义为任何大小的输入n所需的最大运行时间。另一种较少使用的方法是平均情况复杂度,通常有特别指定才会使用。时间复杂度可以用函数T(n) 的自然特性加以分类,举例来说,有着T(n) =O(n) 的算法被称作“线性时间算法”;而T(n) =O(M^n) 和M= O(T(n)) ,其中M≥n> 1 的算法被称作“指数时间算法”。

一个算法花费的时间与算法中语句的执行次数成正比例,哪个算法中语句执行次数多,它花费时间就多。一个算法中的语句执行次数称为语句频度或时间频度。记为T(n)。

一般情况下,算法中基本操作重复执行的次数是问题规模n的某个函数,用T(n)表示,若有某个辅助函数f(n),使得当n趋近于无穷大时,T(n)/f (n)的极限值为不等于零的常数,则称f(n)是T(n)的同数量级函数。记作T(n)=O(f(n)),称O(f(n)) 为算法的渐进时间复杂度,简称时间复杂度。

2、空间复杂度

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

类似于时间复杂度的讨论,一个算法的空间复杂度S(n)定义为该算法所耗费的存储空间,它也是问题规模n的函数。渐近空间复杂度也常常简称为空间复杂度。空间复杂度(SpaceComplexity)是对一个算法在运行过程中临时占用存储空间大小的量度。一个算法在计算机存储器上所占用的存储空间,包括存储算法本身所占用的存储空间,算法的输入输出数据所占用的存储空间和算法在运行过程中临时占用的存储空间这三个方面。算法的输入输出数据所占用的存储空间是由要解决的问题决定的,是通过参数表由调用函数传递而来的,它不随本算法的不同而改变。存储算法本身所占用的存储空间与算法书写的长短成正比,要压缩这方面的存储空间,就必须编写出较短的算法。算法在运行过程中临时占用的存储空间随算法的不同而异,有的算法只需要占用少量的临时工作单元,而且不随问题规模的大小而改变,我们称这种算法是“就地\”进行的,是节省存储的算法,有的算法需要占用的临时工作单元数与解决问题的规模n有关,它随着n的增大而增大,当n较大时,将占用较多的存储单元,例如快速排序和归并排序算法就属于这种情况。

3、正确性

正确性:算法满足问题要求,能正确解决问题。

算法转换为程序后要注意;

  • 程序中不含语法错误
  • 程序对于几组输入数据能够得出满足要求的结果;
  • 程序对于精心选择的、典型、苛刻且带有刁难性的几组输入数据能够得出满足要求的结果;
  • 程序对于一切合法的输入数据都能得到满足要求的结果;

通常以第三层意义上的正确性作为衡量一个算法是否合格的标准。

4、可读性

算法的可读性是指一个算法可供人们阅读的容易程度。

  • 算法主要是为了人的阅读和交流,其次才是为计算机执行的,因此算法应该易于人的理解;
  • 另一方面,晦涩难懂的算法易于隐藏较多错误而难以调试。

也就是关心算法好不好,效率如何,是不是便于调试、修改和扩充。

5、健壮性

健壮性是指一个算法对不合理数据输入的反应能力和处理能力,也称为容错性。

  • 指当输入非法数据时,算法恰当的做出反应或进行相应处理,而不是产生莫名其妙的输出结果。
  • 处理出错的方法,不应是中断程序的执行,而应是返回一个表示错误或错误性质的值,以便在更高的抽象层次上进行处理。

延伸阅读

算法类别

算法可以宏泛的分为三类:

  1. 有限的确定性算法:这类算法在有限的一段时间内终止。他们可能要花很长时间来执行指定的任务,但仍将在一定的时间内终止。这类算法得出的结果常取决于输入值。
  2. 有限的非确定算法:这类算法在有限的时间内终止。然而,对于一个(或一些)给定的数值,算法的结果并不是少数的或确定的。
  3. 无限的算法:是那些由于没有定义终止定义条件,或定义的条件无法由输入的数据满足而不终止运行的算法。通常,无限算法的产生是由于未能确定的定义终止条件。

文章标题:衡量算法好坏的五大标准是什么,发布者:Z, ZLW,转载请注明出处:https://worktile.com/kb/p/34908

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
Z, ZLWZ, ZLW站长
上一篇 2023年1月9日 上午9:02
下一篇 2023年1月9日 上午9:15

相关推荐

  • 低代码与公民自动化

    在企业数字化转型领域,公民自动化是一个比较“陌生又熟悉”的词汇,它在公民开发运动中引起了不小的轰动。那么,什么是公民自动化?什么是公民开发呢?它们之间又有什么不同之处?

    2023年9月21日
    5200
  • 前端开发工具有哪些

    前端开发工具有:一、WebStorm;二、HBuilder;三、Visual Studio Code;四、Sublime Text;五、Atom;六、Adobe Dreamweaver。WebStorm是JetBrains公司旗下一款JavaScript开发工具,功能齐全,集成度高,内置服务器调试、…

    2023年3月31日
    22600
  • 动态规划和贪心法的区别

    动态规划和贪心法的区别:1、解决的问题不同;2、能否获得最优解;3、算法复杂度不同。解决的问题不同是指,动态规划所需要解决的问题是一个大问题被划分为许多重叠的子问题,贪心算法解决的问题是当前时刻的最优选择对后续的决策所造成的影响是可估计的。 一、动态规划和贪心法的区别 1、解决的问题不同 动态规划:…

    2023年4月14日
    2.7K00
  • springcloud和dubbo的区别是什么

    springcloud和dubbo的区别在于以下几个方面:1、初始定位不同;2、生态环境不同;3、调用方式;4、组件差异。初始定位不同是指,SpringCloud定位为微服务架构下的一站式解决方案;Dubbo 是 SOA 时代的产物,它的关注点主要在于服务的调用和治理。 一、初始定位不同 Sprin…

    2023年2月18日
    2.1K00
  • mysql8.0和5.7区别

    MySQL 8.0与5.7的区别主要体现在:1、性能提升;2、新的默认字符集;3、更好的错误日志;4、提供了角色的概念;5、增强的JSON支持。从整体来看,MySQL 8.0在性能和功能上都做了较大的提升。 一、性能提升 MySQL 8.0相较于5.7在性能上进行了显著的提升,包括查询优化、增加了性…

    2023年6月5日
    1.8K00
  • 办公软件哪个好用又不收费

    好用又不收费的办公软件:1、钉钉;2、WPS Office;3、企业微信;4、网易邮箱大师;5、speedoffice;6、OpenOffice.org;7、FreeOffice;8、LibreOffice。钉钉是阿里巴巴集团打造的数字经济时代的企业组织协同办公和应用开发平台。 1、钉钉 钉钉(Di…

    2023年3月28日
    97500
  • 云计算部署模式包括哪些

    云计算部署模式包括:1、公有云;2、私有云;3、社区云;4、混合云。公有云是云服务提供商对外提供的公有云服务部署模式。云服务提供商在对公有云的基础构架进⾏预配置后,通过lnternet以免费或按需付费的⽅式提供给企业组织和个⼈公开使⽤。 1、公有云 公有云是云服务提供商对外提供的公有云服务部署模式。…

    2023年1月16日
    1.1K00
  • 返回值被忽略是什么情况

    返回值被忽略是因为:1. 函数返回值没有被赋值;2. 函数返回值被丢弃;3. 函数返回值没有被检查。当我们调用函数时,如果函数的返回值没有被赋值给任何变量,就会出现返回值被忽略的情况。 1. 函数返回值没有被赋值 当我们调用函数时,如果函数的返回值没有被赋值给任何变量,就会出现返回值被忽略的情况。例…

    2023年2月28日
    1.2K00
  • SaaS软件和传统软件区别在哪

    SaaS软件和传统软件区别在:1、开发模式与交互模式的区别;2、软件盈利模式的不同;3、部署时间的不同;4、数据安全性的不同;5、集成性的不同。传统管理软件的开发模式,是以软件产品为中心,通过市场推广不断寻找更多的客户购买产品来实现业务增长。 一、开发模式与交互模式的区别 传统管理软件的开发模式,是…

    2023年4月23日
    19400
  • 如何度量ERP系统的成功实施

    衡量ERP系统成功实施的核心指标包括:1、用户满意度、2、系统整合性与一致性、3、流程优化与效率提升、4、信息的可靠性与实时性、5、投资回报率(ROI)、6、企业战略目标达成情况。用户满意度反映了员工对新系统的接受程度,系统整合性与一致性体现了不同部门间信息流转的顺畅程度。流程优化与效率提升是衡量实…

    2023年11月27日
    500

发表回复

登录后才能评论
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部