为了表示一个算法,可以使用不同的算法描述方法。
所谓自然语言,就是人们日常使用的语言。可以使用汉语、英语或其他语言来描述算法。例如,用自然语言描述求 n !的算法。如果 n =5,即求1×2×3×4×5。假设 s 代表累乘之积, t 代表乘数,那么自然语言表示的 n !的算法为:
步骤1 :使 s =1, t =1;
步骤2 :使 s × t ,得到的乘积放在 s 中;
步骤3 :使 t 的值加1;
步骤4 :如果 t ≤ n ,则返回步骤2,重新执行;否则,循环结束,此时, s 中的值就是 n !,输出 s 。
用自然语言描述算法通俗易懂,比较符合人们的日常思维习惯,但描述文字比较烦琐、冗长,容易产生歧义,难以清楚地表达算法的逻辑流程。因此,一般用自然语言描述较为简单的算法。
流程图是用一些几何图形、线条以及文字说明来描述算法的逻辑结构。该方法形象、简明直观、易于理解、便于交流。ANSI规定了一些常用的流程图符号,如图1-1所示。
图1-1 传统流程图中的常用符号
传统流程图用流程线指出各框的执行顺序,对流程线的使用没有严格限制。因此,使用者可以不受限制地使流程随意转向,这往往会使流程图变得毫无规律,难以阅读、修改,使算法的可靠性和可维护性难以得到保证。图1-2是用传统流程图表示的程序的三种基本结构。
图1-2 三种程序基本控制结构的传统流程图
N-S流程图是由美国学者I. Nassi和B. Shneiderman提出的表示算法的图形工具,用于简化控制流向。该表示方法的基本单元是矩形框,用不同的形状线作为分割。流程图中只有一个入口、一个出口,没有流程线。N-S流程图的优点是比文字描述直观、形象、易于理解,比传统流程图紧凑、易画。尤其是它废除了流程线,避免了流程任意转向,增加了可读性。图1-3是用N-S流程图表示的程序的三种基本结构。
图1-3 三种程序基本控制结构的N-S流程图
伪代码是介于自然语言和计算机语言之间的一种用文字和符号来描述算法的工具。伪代码并不对应于某种计算机语言,而是一种类似计算机语言的代码。这种伪代码表示方法不能被计算机所理解,但接近于用某种语言编写的程序,便于转换成计算机程序。
微视频1-3 算法的描述方法