3.4.1 算法概述

2025-06-16 16:11:02 更新

(一)算法基本概念

(1)定义

是问题求解过程的精确描述,为解决某一特定类型的问题规定了一个运算过程。

(2)特性


特性

说明

1

有穷性

一个算法必须在执行有穷步骤后结束,且每一步都可在有穷时间内完成。

2

确定性

算法的每一步必须是确切定义的,不能有歧义。

3

可行性

算法应该是可行的,意味着算法中所有要进行的运算,都能够由相应的计算装置所理解和实现,并可通过有穷次运算完成。

4

输入

一个算法有零个或多个输入,是算法所需的初始量或被加工的对象的表示。这些输入取自特定的对象集合。

5

输出

一个算法有一个或多个输出,是与输入有特定关系的量。

算法实质上是特定问题的可行的求解方法、规则和步骤。

(3)优劣评估


标准

说明

1

正确性

也称有效性,指算法能满足具体问题的要求。

即对任何合法的输入,算法都能得到正确结果。

2

可读性

指算法被理解的难易程度。设计的算法应尽可能简单易懂。

3

健壮性

也称鲁棒性,即对非法输入的抵抗能力。对于非法的输入数据,算法应能加以识别和处理,而不会产生误动作或执行过程失控。

4

效率

算法运行时花费的时间和使用的空间,对算法的理想要求是运行时间短、占用空间小。

(二)算法与数据结构

算法与数据结构密切相关,算法实现时总是建立在一定的数据结构基础之上。

程序=数据结构+算法

用计算机求解问题时,一般应先设计初步数据结构,然后再考虑相关的算法及其实现。

设计数据结构时应当考虑可扩展性,修改数据结构会影响算法的实现方案。

(三)算法的描述

常用算法描述方法有流程图、N/S盒图、伪代码和决策表等。


描述方法

说明

1

流程图

(flow chart)

即程序框图,是历史最久、流行最广的一种算法的图形表示方法。

每个算法都可由若干张流程图描述。

流程图给出了算法中所进行的操作以及这些操作执行的逻辑顺序。

2

N/S盒图

是结构化程序设计出现后的描述工具。

在N/S图中,每个处理步骤用一个盒子表示,盒子可以嵌套。

对于每个盒子,只能从上面进入,从下面走出,别无其他出入口。

盒图限制了随意的控制转移,保证了程序的良好结构。

3

伪代码

特点:借助于程序语言的语法结构和自然语言叙述,使算法具有良好的结构又不拘泥于程序语言的限制。易读易写,容易转换成程序。

4

决策表

是一种图形工具,将比较复杂的决策问题简洁、明确、一目了然地描述出来。

(四)流程图

(五)N/S盒图

(六)伪代码

(七)决策表

(八)算法效率

解决同一个问题总是存在多种算法,每个算法在计算机上执行时,都要消耗时间(CPU执行指令的时间)和使用存储空间资源。

设计算法时,需要考虑算法运行时所花费的时间和使用的空间,以时间复杂度和空间复杂度表示。

算法分析时,常采用算法的时空开销随n(问题规模)的增长趋势来表示其时空复杂度。

● 大O表示法

语句频度(frequency count)是指语句被重复执行的次数,对于某个基本语句,若在算法执行过程中被执行n次,则其语句频度为n。算法中各基本语句的语句频度之和表示算法的执行时间。