《计算机导论》知识点整理4-算法的基本特征和算法的分析标准

 

一、什么是算法?

算法,就是计算机对解题方案完整又准确的描述。通俗的说就是解决某项问题所采取的方法和步骤。

 

算法主要分成两大类:数值算法、非数值算法。

 

1)数值算法:目的是求数值的解,特点就是少量的输入和输出、大量复杂的运算。

 

2)非数值算法:目的是对数据进行处理,特就是大量的输入和输出、简单的运算,应用面十分广泛。

 

二、算法的基本特征

1、能行性

2、确定性

3、有穷性

4、可以没有输入或者多个输入但是至少有一个输出

 

理解:算法是对计算机的解决问题方案的描述,那每一步都应该是可以执行并且是确定、没有歧义的,使用者可以不通过输入设备进行输入但是通过算法,计算机一定要有一个输出的结果,这也要求了算法步骤必须有限,否则计算机将会一直按照算法的步骤一直算下去,就一直没有结果输出。

 

三、算法的表示

这里主要介绍几种类型的描述算法的工具:自然语言、流程图、伪代码、程序设计语言

 

1)自然语言:就是人们常用的语言描述,这是通俗易懂的。

 

2)流程图:就是用图画的形式,随着时代的发展流程图的呈现也在不断地进步,细分下来有:传统流程图、N-S流程图(盒图)、PAD图

 

传统的流程图,就是用箭头和图形组合的形式展现

《计算机导论》知识点整理4-算法的基本特征和算法的分析标准_第1张图片

 

 

 

盒图,也就是N-S流程图,它是在传统的流程图的基础上演化而来,主要体现在课可以嵌套使用并且省掉的箭头

PAD图,是一种以二维树形结构图的方式对结构化程序进行描述,因此由PAD图设计出来的程序也必然是结构化程序,通过软件工具可以将这样的PAD图翻译成程序代码。见下表:

《计算机导论》知识点整理4-算法的基本特征和算法的分析标准_第2张图片


上部分是盒图,下部分是PAD图

 

 

3)伪代码(PDL):“伪”就代表假,它是使用介于自然语言和计算机语言的文字和符号来描述算法。它本质上时不能直接被计算机理解执行的,需要借助高级语言的控制结构和自然语言来描述,运用缩进格式来表示控制结构的嵌套,比如像:procedure、begin、end、loop、if、then等等。特点就是少量的语法规则和大量的自然语言描述,使用起来比较灵活。

 

4)程序设计语言:就是我们常说的C语言、Python,java等等编程语言。

 

四、算法的分析角度

主要就是几个方面:正确性、简单性、时间复杂度、空间复杂度

 

1)2)正确性和简单性就是算法(解决方案的描述)对于解决这个问题而言是不是正确的,是不是足够简单。也就是解决这个问题,你的解决方案是否正确和解决方式是否足够简单。

 

3)时间复杂度:就是算法在机器上执行运算花费的时间。主要分成了“事前分析估算”和”事后统计“。

 

”事后统计“就是字面意思,在执行完算法之后,统计运算需要的时间,但是这需要执行完程序之后并且受到硬件设备的影响,这样的统计往往会难以判断执行运算时计算机需要的时间。

 

”事前分析估算“,就是在执行算法之前的时间估算,主要基于以下几个因素:高级语言的种类(越是高级的语言,执行效率越低)、采用的算法策略、编译器的质量、问题的规模等等

 

显然,一个算法在不同语言的描述、用不同编译器编译、不同计算机上执行所耗费的时间都不一样。

 

算法=控制结构(顺序、分支、循环)+原操作(固有的数据类型的操作),算法时间就取决于两者的综合效果。

 

抛开计算机软硬件的影响,用问题的规模来决定一个算法的”工作量“,用n来表示问题规模的函数

 

时间复杂度的呈现等级有以下几个,见下表:

《计算机导论》知识点整理4-算法的基本特征和算法的分析标准_第3张图片


随着n的不断增加,时间复杂度也不断增加,算法的执行效率就越低。

 

 

4)空间复杂度:就是一个算法在运行过程中临时占用的存储空间的大小。借用书上的描述一用:

《计算机导论》知识点整理4-算法的基本特征和算法的分析标准_第4张图片

 

 


最后,作为笔记,肯定有很多的不足之处,希望大家多多包涵,有什么不准确的地方也希望能收到指正,阿白会更改哒!

 

 知识点整理4-算法的基本特征和分析标准

 

你可能感兴趣的:(c语言)