前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >算法与算法分析

算法与算法分析

作者头像
ellipse
发布2019-08-16 17:14:25
8810
发布2019-08-16 17:14:25
举报

一、什么叫算法

算法(Algorithm):是对特定问题求解方法或步骤的一种描述。一个算法可以用多种方法描述,主要有:

使用自然语言描述;

使用形式语言描述;

使用计算机程序设计语言描述。

代码语言:javascript
复制
注:算法和程序是两个不同的概念。一个计算机程序是对一个算法使用某种程序设计语言的具体实现。

算法一般具有以下五个特性:

1、输入:一个算法有零个或多个输入,这些输入取自于某个特定的对象集合。

2、 输出:一个算法有一个或多个输出,这些输出是同输入有着某些特定关系的量。

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

4、确定性:算法中每一条指令必须有确切的含义,不存在二义性。

5、可行性:算法描述的操作都可以通过已经实现的基本运算执行有限次来实现。

二、什么叫好算法

评价一个好的算法有以下几个标准:

正确性(Correctness):算法应满足具体问题的需求。

可读性(Readability):算法应容易供人阅读和交流,方便理解和修改。

健壮性(Robustness):算法应具有容错处理。当输入非法或错误数据时,算法应能适当地作出反应或进行处理,而不会产生莫名其妙的输出结果。

通用性(Generality):算法应具有一般性 ,即算法的处理结果对于一般的数据集合都成立。

效率与存储空间需求:效率指的是算法执行的时间;存储空间需求指算法执行过程中所需要的最大存储空间。一般这两者与问题的规模有关。

三、算法的时间复杂度

算法中基本操作重复执行的次数是问题规模n的某个函数,其时间量度记作:T(n)=O(f(n)),称作算法的渐近时间复杂度(Asymptotic Time complexity),简称时间复杂度。一般地,常用最深层循环内的语句中的原操作的执行频度(重复执行的次数)来表示。

表示时间复杂度的阶有:

O(1):常量时间阶

O(n):线性时间阶

O(logn):对数时间阶

O(n*logn):线性对数时间阶

O (n^k):k≥2,k次方时间阶

四、算法的空间复杂度

空间复杂度(Space complexity):是指算法编写成程序后,在计算机中运行时所需存储空间大小的度量。记作:S(n) = O(f(n)),其中:n为问题的规模或大小。

存储空间一般包括三个方面:

  • 输入数据所占用的存储空间;
  • 指令常数变量所占用的存储空间;
  • 辅助(存储)空间。
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-08-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 ellipse数据库技术 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 四、算法的空间复杂度
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档