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

衡量算法好坏的五大标准: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

相关推荐

  • 项目培训与团队发展策略

    项目培训和团队发展策略对于确保团队成员能够有效合作、提升技能以及达到项目目标至关重要。1、制定定制化培训计划是提升个人技能和团队整体能力的基础;2、促进跨功能协作有助于提升团队的通用能力;3、持续学习与发展文化可激励成员不断进步;4、使用技术与智能工具可以提高培训效率与团队协作质量;5、定期评估与反…

    2023年11月30日
    22300
  • 比特流下载是否合法

    比特流是一种合法的文件传输协议,只要内容可以合法地下载或上传,其使用(称为流下载)也就合法。但是,如果使用它来下载受版权保护的材料(例如新出的电影),并且未得到版权所有者的许可,就是不合法的。 比特流下载是否合法 比特流是一种合法的文件传输协议,只要内容可以合法地下载或上传,其使用(称为流下载)也就…

    2022年11月7日
    33400
  • okr怎么评分|OKR

    OKR评分的核心标准包括:1、目标达成度;2、结果的影响力;3、进展的质量;4、合作与参与度。 其中,目标达成度是OKR评分中的基础,通常通过对照设定的关键结果(Key Results)来衡量。目标与结果的对齐确保OKR不仅仅是努力的方向,而是具体、量化的成果。 一、OKR评分标准与流程 Objec…

    2024年1月17日
    18600
  • 云服务中的长期数据存储策略

    在云服务领域,长期数据存储策略依据数据重要性、存取频次、合规要求和成本效益比对数据进行分类和存储。数据归档成为关键手段,旨在保障数据在长时间内的安全性和可访问性,同时降低存储成本。 数据归档是针对那些不常访问但需要长期保留的数据的存储方式。归档数据通常存放在具有低成本和高耐久性的存储介质中,例如云服…

    2023年12月25日
    21800
  • 办公室oa软件

    标题:办公室OA软件的重要性与应用实践 办公室OA(Office Automation)软件在提升企业运营效率、改善流程管理中扮演了至关重要的角色。OA软件让信息流转更迅速、1、提升工作效率;2、简化流程;3、促进沟通协作;4、实现远程管理。 其中,提升工作效率是OA软件对企业的首要贡献,通过集成电…

    2024年1月11日
    15100
  • 智慧养老APP开发定制开发需要具备哪些功能

    智慧养老APP开发定制开发需要具备的功能有:1、人员管理;2、房间管理;3、实时监测;4、级别管理;5、紧急救护。人员管理是指,录入老人的基本信息及紧急联系人,还有老人的健康档案,照顾的注意事项。 一、人员管理 录入老人的基本信息及紧急联系人,还有老人的健康档案,照顾的注意事项。 二、房间管理 养老…

    2023年5月10日
    30300
  • 软件开发易用性都包含哪些特点

    软件开发易用性都包含的特点有:1、易理解性;2、易学习性;3、易操作性;4、易吸引性;5、依从性。易理解性是指用户认识软件的结构、功能、向导、逻辑、概念、应用范围、接口等难易程度。 一、易理解性 易理解性是指用户认识软件的结构、功能、向导、逻辑、概念、应用范围、接口等难易程度。该特性更多的是指文档内…

    2023年5月5日
    78400
  • 产品经理与项目经理的区别是什么

    产品经理与项目经理在责任、技能以及工作重点上存在显著区别。1、职责焦点有别:产品经理主要关注产品从构思到市场的整个生命周期,包括定义产品愿景和战略、理解用户需求、定义产品特性等,而项目经理负责规划、执行、监控和完成具体项目,重点管理项目进度、预算和资源。2、角色定位不同:产品经理担当用户与技术团队之…

    2023年12月19日
    22000
  • 云原生环境中日志管理的最佳方法

    云原生环境中日志管理的最有效方法包括:1、集中式日志管理、2、实现日志数据的结构化、3、设置有效的日志保留策略、4、日志数据的安全性、5、合规性以及6、自动化工具的使用。这里面,集中式日志管理 是场景中至关重要的一环,涉及到将分布在多个容器和服务中的日志数据集中存储和处理,以便实时监控和问题排查。通…

    2023年12月28日
    20100
  • 敏捷开发中的迭代和增量是什么意思

    敏捷开发中的迭代是指一个完整开发周期的意思,增量是指在一个迭代周期内,所完成的软件产品的一部分或一个特性的意思。详细介绍:1、迭代,是一个核心概念,指的是一个完整的开发周期,包括计划、开发、评审、反馈和调整等环节,一个迭代周期通常为1-4周,每个迭代周期结束时,都会产生一个可用的软件产品增量;2、增量,代表了团队在一个迭代周期内的工作成果等等。

    2023年10月20日
    1.0K00

发表回复

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

400-800-1024

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

分享本页
返回顶部