算法流程图,专指以特定的图形符号加上说明表示算法的图。一般有两种表示方法:传统流程图与结构流程图,其中传统流程图应该更广泛一些。算法设计可以称之为程序设计的核心,而表示一个算法,有多种不同的方法,常用的有自然语言,流程图,伪代码,PAD图等。
算法流程图作用
程序一般可简单划分为两类:逻辑流程类程序、算法应用类程序,但复杂的应用多是二者的组合。其中逻辑流程类更多强调的是时序、操作步骤等,一般都是用来简化人类的事务性劳动而设计,如打开12306网站,登录后查询并购买火车票,整个过程应涉及到一系列与人交互的逻辑动作,另有后台的数据查询匹配算法,属于典型的融合应用。二者中,算法部分更复杂、抽象,需要一种图形化的方法来描述。
用图形表示算法,直观形象,易于理解,更方便开发交流及测试检验。算法流程图不仅用来指导编写程序,而且在调试程序中可以用来检查程序的正确性。如果框图是正确的而结果不对,则按照框图逐步检查程序是很容易发现其错误的。核心算法流程图一般是软件开发中的重要文档,作为程序说明书的一部分进行存档,供合作伙伴、后加入同事参考,更好的帮助理解算法的思路和结构。
算法流程图绘制符号
美国国家标准化协会ANSI曾规定了一些常用的流程图符号,为世界各国程序工作者普遍采用。最常用的流程图符号见图1与表1。
表1,流程图基本符号描述
下图2为亿图图示中的流程图的基本构成元素,与图1中规定的符号基本一致。
算法流程图绘制要点
任何复杂的算法流程图都是由顺序结构、分支结构与循环结构三种基本结构共同组合而成。基本结构之间可以并列、可以相互包含,但不允许交叉,不允许从一个结构直接转到另一个结构的内部去。
算法流程图绘制案例
冒泡排序(Bubble Sort)是一种简单直观的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢”浮”到数列的顶端。其具体的步骤描述如下:
- 比较相邻的元素。如果第一个比第二个大,就交换他们两个。
- 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。
- 针对所有的元素重复以上的步骤,除了最后一个。
- 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
- 该过程用算法流程图描述,则如下图3所示,更适用直接编码使用。