更新时间:2022年06月01日09时42分 来源:传智教育 浏览次数:
算法(algorithm)是解决特定问题的步骤描述,通俗地讲,算法就是描述解决问题步骤的方法。例如,新学期开学,从家到学校的交通方式这个问题就有很多解决方案:有的学生乘坐火车,有的学生乘坐汽车,有的学生乘坐飞机,在本市的可能会自己开车或乘坐公共汽车,离学校近的可能会步行来学校。这里每一种方案就是一种算法,这么多解决方法就是这么多种算法。
在计算机中,算法也是对某一个问题的求解方法,只是它的表现形式是计算机指令的有序序列,执行这些指令就能解决特定的问题。例如,在高级程序设计语言(如C语言)中,常用的排序算法如选择排序、冒泡排序等,都是用计算机指令编写算法,来解决排序问题。
在程序设计中,算法有3种较为常用的表示方法:伪代码法、N-S结构化流程图和流程图法,用得最多的是流程图法,接下来就简单地学习算法的流程图法。流程图是描述问题处理步骤的一种常用图形工具,它由一些图框和流程线组成。使用流程图描述问题的处理步骤,形象观,便于阅读。画流程图时必须按照功能选用相应的流程图符号,常用的流程图符号如图所示。
图1-12所示的流程图符号中列举了4个图框、1个流程线和1个连接点,具体说明如下:
·起止框用于表示流程的开始或结束。
·输入输出框用平行四边形表示,在平行四边形内可以写明输入或输出的内容。
·判断框用菱形表示,它的作用是对条件进行判断,根据条件是否成立来决定如何执行后续的操作。
·处理框用矩形表示,它代表程序中的处理功能,如算术运算和赋值等。
·流程线用单向箭线或直线表示,可以连接不同位置的图框。流程线的标准流向是从左到右和从上到下,可用直线表示,非标准流向的流程线应使用箭头指示方向。
·连接点用圆形表示,用于流程图的延续。通过上面的讲解,读者对流程图符号有了简单的认识。下面以一个数组选择排序算法
的流程图为例,学习简单的流程图,如图所示。
假设一个数组要从小到大排序,结合流程图来分析选择排序的过程:
第一步,在数组中选择出最小的元素,将它与0角标元素交换,即放在开头第1位。
第二步,除0角标元素外,在剩下的待排序元素中选择出最小的元素,将它与1角标元素交换,即放在第2位。
第三步,依次类推,直到完成最后两个元素的排序交换,就完成了升序排列。这样根据流程图来编写算法的指令代码,就会变得清晰简单。读者在以后设计算法时,最好先根据设计思路出算法的流程图,其次分析其可行性,最后再完成代码。
算法的特性
一个好的算法,尤其是一个成熟的算法,应该具有以下5个特性:
(1)确定性。算法的每一步都有确定的含义,不会出现二义性。即在相同条件下,只有一条执行路径,相同的输入只会产生相同的输出结果。
(2)可行性。算法的每一步都是可执行的,通过执行有限次操作来完成其功能。
(3)有穷性。一个算法必须在执行有穷步骤之后结束,且每一步都可在有穷时间内完成。这里的有穷概念不是数学意义上的,而是指在实际应用当中可以接受的、合理的时间和步骤。
(4)高效率与低存储。算法的效率通常指的是算法的执行时间,对于同一个问题的多种算法,执行时间短的其效率就高。存储量指的是算法在执行过程中所需的最大存储空间,包括所用到的内存及外存。设计算法时应考虑到执行效率和存储需求,设计出一个“性价比”较高的算法。
要设计出一个好的算法,就要综合考虑其正确性、可读性、健壮性,还要考虑其执行效率和存储量需求。