算法

administrator 73 0
算法就是解决问题的一系列流程的集合,可以认为算法是一个模型,它给出了解决某一问题的步骤,所以算法可以认为是编程的第一个步骤。

算法的特征

算法是由有限步骤组成的解决实际问题的步骤集合,算法的设计主要经过了分析-抽象-建模三个步骤,首先,解决这个问题人脑是如何处理的?借此能不能分析出规律?然后将其处理按步骤进行抽象,最后建立解决问题的模型。因此算法具有有穷性,给出的结果有明确的含义,所以算法有确定性。算法都是能执行的,所以它具有有效性,算法一般有输入,但是必须有输出,所以算法有0个或多个输入,有一个输出(一个明确的、唯一的结果)。

算法的表示方法

算法能用很多方法表示,一般有以下几种:

自然语言

自然语言就是采用我们平时说话、记事的习惯来描述算法,这样的表述方便,但是没有一定的结构,它可能不是那么容易把步骤描述清楚,也不一定方便阅读。

程序语言

程序语言就是采用计算机语言来写这个算法的流程,具有非常严谨的结构,里面包含代码逻辑,看起来不够直观。

流程图

流程图采用线和框构成,具有一定的结构,但是因为有流程线,所以很容易产生goto这样的语句,很容易造成程序可读性降低。

算法

N-S图

N-S图没有流程线,可以很完美的解决goto语句的问题,因此在很多项目里N-S图都是首选的算法描述工具。

算法

PAD图

...

伪代码

人们采用类似于代码的结构来描述代码,但又没有严格按照编码规范来做,这样的代码仅能帮助人们了解算法却不可以直接被编译器识别。

算法复杂度

空间复杂度

是对一个算法在运行过程中临时占用存储空间大小的量度。

时间复杂度

时间复杂度简单来说就是完成这一个算法需要的时间,这跟计算机性能密切相关,一般来说需要更多时间来计算的算法往往更复杂。

小结

一般来说空间复杂度和时间复杂度是相互制约的,当追求一个较好的时间复杂度时,可能会使空间复杂度的性能变差,即可能导致占用较多的存储空间;反之,当追求一个较好的空间复杂度时,可能会使时间复杂度的性能变差,即可能导致占用较长的运行时间。[引用自百度百科]

小结

算法不是计算机语言,而是人的一种解决问题的逻辑思维,是人根据计算机的算力能力和限制求解问题的思维过程,算法是人的思维,所以判断一个算法是否有价值并不是简单的确定算法可以得到正确的结果那么简单,还要考虑计算机能否按这套算法在一个能接受的时间里将结果计算出来。

发表评论 取消回复
表情 图片 链接 代码

分享