常用算法深入学习实录
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.3 表示算法的方法

算法的表示方法即算法的描述和外在表现,在前面1.2.1节中演示的算法都是通过语言描述来体现的。其实除了语言描述之外,还可以通过其他方法来描述算法。在接下来的内容中,将简单介绍几种表示算法的方法。

1.3.1 用流程图来表示算法

流程图的描述格式如图1-1所示。

图1-1 流程图标识说明

再次回到前面1.2.1节中的问题:

假设有80个学生,要求打印输出成绩在60分以上的学生。

针对上述问题,可以使用图1-2所示的算法流程图来表示。

图1-2 算法流程图

在日常流程设计应用中,通常使用如下3种流程图结构。

■ 顺序结构:顺序结构如图1-3所示,其中A和B两个框是顺序执行的。即在执行完A的操作后再执行B的操作。顺序结构是一种基本结构。

图1-3 顺序结构

■ 选择结构:选择结构也称为分支结构,如图1-4所示。在此结构中必含一个判断框,这个判断框能够根据给定的条件是否成立而选择是执行A框还是B框。无论条件是否成立,只能执行A框或B框之一;也就是说A、B两框只有一个,也必须有一个被执行。若两框中有一框为空,程序仍然按两个分支的方向运行。

图1-4 选择结构

■ 循环结构:循环结构分为两种,一种是当型循环,另一种是直到型循环。当型循环是先判断条件P是否成立,成立才执行A操作。而直到型循环是先执行A操作再判断条件P是否成立,成立则又一次执行A操作。例如图1-5所示的是直到型循环的循环流程。

图1-5 直到型循环结构(虚线内将循环)

上述3种基本结构有如下4个很重要的特点,这4个特点对于理解算法很有帮助:

■ 只有一个入口;

■ 只有一个出口;

■ 结构内的每一部分都有机会被执行到;

■ 结构内不存在“死循环”。

1.3.2 用N-S流程图来表示算法

在1973年,聪明的美国学者提出了N-S流程图的概念,通过它可以表示计算机的算法。N-S流程图由一些特定意义的图形、流程线及简要的文字说明构成,能够比较清晰明确地表示程序的运行过程。人们在使用传统流程图的过程中,发现流程线不一定是必需的,所以设计了一种新的流程图,这种新的方式可以把整个程序写在一个大框图内,这个大框图由若干个小的基本框图构成,这种新的流程图被简称为N-S图。

遵循N-S流程图的特点,顺序结构表示为图1-6所示的结构,选择结构表示为图1-7所示的结构,循环结构表示为图1-8所示的结构。

图1-6 顺序结构

图1-7 选择结构

图1-8 循环结构

1.3.3 用计算机语言表示算法

因为算法可以解决计算机中的编程问题,是计算机程序的“灵魂”,所以可以使用计算机语言来表示算法。当用计算机语言表示算法时,必须严格遵循所用语言的语法规则。再次回到1.2.1节中的如下问题:

1×2×3×4×5

如果用C语言编程来解决上述问题,可以通过如下代码实现。

main(){
int i,t;            //定义两个变量
t=1;                //t的初始值为1,i的初始值为2
i=2;
while(i<=5){
          t=t*i;
          i=i+1;
    }
    printf("%d",t);
}

上述代码是根据1.2.1节中的语言描述算法编写的,因为是用C语言编写的,所以需要严格遵循C语言的语法规则。例如在上述代码中,主函数main()、变量和printf()输出信息都遵循了C语言的语法规则。