2.1.2 算法的概念和特点
刚接触程序设计的读者会有这样一种感觉:通常读别人编的程序比较容易,但自己编写程序时就难了,虽然学了程序设计语言,可还是不知道从何下手,这是为什么呢?其中重要原因之一就是没有掌握基本的算法。事实上,生活中几乎每一件事都是遵循着一定的算法来完成的,也就是说要按照事先想好的步骤有条不紊地进行。就拿生活中最常见的例子来说,你虽然认识地铁站,但是不知道按照怎样的路线才能到达目的地,当别人告诉你一条线路,如先坐1号线在某一站下车,再转2号线,这就相当于提出了一个解决问题的算法,于是你就可以沿着这条路线到达目的地。当你下次再去相同的地方时,就不会再有疑问了。所以,当我们面对一个需要解决的问题时,不要急于编写程序,应该先思考解决该问题的方法和步骤。在学习程序设计语言的过程中,我们应该注重一些常用算法的积累。
当然,我们所说的算法仅指计算机算法,具体地说,它就是一个有穷规则的集合,即为解决一个具体问题而采取的确定的有限的操作步骤。通常情况下,解决某个问题的算法不是唯一的,正如前面所说,到达目的地的公交线路或者地铁线路有很多,在这些线路中,有些价格优惠,有些节省时间。由此可见,对于相同的问题,不同的用户可能会设计出不同的算法,那么算法性能也会有所差别。
设计完一个算法后,怎样衡量它的正确性呢?一般可用以下五种特性来进行衡量。
(1)有穷性:一个算法必须保证执行有限步之后结束。一个无穷的算法并不能得到我们所需要的结果,那么这个算法将毫无意义。
(2)确定性:算法的每一步骤都应是确定、没有歧义的,从而保证算法能安全正确地被执行。
(3)可行性:算法中的每一个步骤原则上都应是可以正确执行的,而且能得到确定的结果。
(4)输入:一个算法可以有0个或多个输入。输入为算法指定了初始条件,当然这个条件并不是必须的。
(5)输出:一个算法可以有1个或多个输出。算法的实现是以得到计算结果为目的,没有输出的算法是毫无意义的。
了解过算法的概念后,我们考虑的就是如何描述算法了。描述算法常用的工具有自然语言、传统流程图、N-S流程图和伪代码等,我们在下一小节“结构化程序设计”中将重点介绍传统流程图和N-S流程图。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。