计算机软件——算法

一、概念

解题的方法与步骤。使用某种程序设计语言描述该算法(编程),并编译成目标程序和进行调试;运行程序,获得问题的解答;进行评估,改进算法和程序。

注:算法是解决某一类问题的,而不是一个特定的问题。算法对计算机特别重要!


二、性质

确定性。即精确性。不能有二义性。如:放少许油(违犯了算法的确定性)。
有穷性。执行了有限步操作后算法终止。
能行性。操作都是在计算机的能力范围之内,且在有限时间内能完成。
输出。算法必须至少有一个输出。但可以没有输入(即:0个输入)


三、算法与程序的关系

  • ①一个算法,可以对应多个程序(有些用C写,有些用java写,且具体编写方式都可以有差异)即:算法是程序的灵魂
  • ②算法必须是有穷的,而程序可以是死循环的(无限循环)。
  • ③算法可以用:图形、伪代码等表示。而程序必须用程序设计语言来设计。
  • ④若一个问题的解决无法表示为计算机算法,则计算机将无法解决。也无法写出程序。

四、算法设计——原则:由粗到细、由抽象到具体、逐步求精。

  1. 完整考虑整个问题所有可能的情况
  2. 每一个步骤必须是计算机能够执行的
  3. 必须在有限步骤内求出预定的结果。

 “查找”算法

顺序查找、二分法查找


 五、算法的表示

  • 文字叙述
  • 流程图表示
  • 伪代码描述
  • 程序设计语言

注:不能认为:算法只能用程序设计语言表示

(一)文字叙述

 (二)流程图

流程图符 :

比文字描述简明,但当算法比较复杂时,理解困难,容易产生错误

(三)伪代码

伪代码(Pseudo code)是用来描述算法的一种语言,它既类似于自然语言,又使用与程序设计语言相似的方法描述算法


六、算法分析

除了正确性、简单性之外,从时间资源与空间资源上进行分析。

(一)时间复杂度

  • (会计算)若已知算法的操作步骤数目是:2n^2+3n+3,则时间复杂度是O(n^2)
  • 若已知算法的操作数目:120,则时间复杂度是O(1)。含义:常量级。
  • 时间复杂度从好到坏是:
  • O(1)-?O(logn)-?O(n)-?O(nlogn)-?O(n^2)-?O(n^3)-?O(2^n)-?O(3^n)-?O(n^n)
  • 时间复杂度越小,算法越好。

(二)空间复杂度

  • 算法在运行时所需要的空间多少。
  • 一个算法的空间复杂度是O(1),该算法称为:原地工作的算法。
  • 测试:若一个算法所需要的空间与问题规模无关,则该算法是原地工作的。
  • 答:正确。因为,一个算法所需要的空间与问题规模无关,则空间复杂度是O(1),故正确。

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年1月11日
下一篇 2022年1月11日

相关推荐