算法与程序的区别与联系 程序算法有哪些特征( 二 )


2、什么是程序算法?
我们知道,程序是用来解决问题的,是由多个步骤或过程组成的,这些步骤和过程就是解决问题的算法 。
同学们都下过象棋吧,图3给出的是《江湖迷局》一书的一个残局棋谱,棋谱给出了每一步棋的走法,按照棋谱规定的步骤行棋,就能破解这个残局,棋谱给出的行棋规则就是算法 。
图3 棋谱残局
去超市购物时,人们经常会对需要购买的同类商品做价格的比较,例如商品A、商品B、商品C在同样质量的情况下,人们会倾向于比较价格,优先购买价格便宜的商品,这个比较过程是在大脑进行的,比较的过程就是排序算法,从三个数中找出最小的数 。
图4 超市购买货物时进行价格比较
图3的棋谱残局需要走11手,就能破解残局,图4的价格排序也仅需要对3个数进行排序,在大脑比对一下数的大小就完成了 。它们都是算法,算法有没有明确的概念和特征呢?
要想弄清楚算法的概念和特征 。先看看算法能给人们的生活带来哪些帮助?前面的棋谱残局和价格比对是生活中的算法,可以帮助人们解决生活中的一些问题,让我们变成象棋高手,或者买到最实惠的商品 。
如果让计算机执行算法,会给人们带来什么帮助呢?在学习方面,把解方程的步骤输入到计算机,可以帮助人们解方程;在工作方面,把英汉词库及检索算法输入到计算机,可以帮助人们自动进行英汉词语翻译;在生活方面,把游戏规则和算法输入到计算机,可以让人们娱乐等等 。计算机有了算法,才有了大脑和灵魂,没有算法的计算机,只能是一台机器 。
为了让计算机能够完成前面所说的任务,就需要事先对各类问题进行分析,确定解决问题的具体方法和步骤 。再编制好一组让计算机执行的指令,交给计算机,让计算机按人们指定的步骤有效地工作 。这些具体的方法和步骤,其实就是一个问题的算法 。例如,让计算机帮助我们解方程,就需要把解方程的步骤和方程参数输入到计算机,计算机根据输入的步骤和参数完成方程的求解 。
严格来说,计算机程序是为让计算机完成某项任务而编写的指令序列,指令序列就是解决问题的算法 。
图5 算法的概念
【算法与程序的区别与联系 程序算法有哪些特征】前面理解了算法的概念,再来看看算法有哪些特征 。
算法是由有限多个步骤组成的,它有下述两个基本特征:第一个特征是每个步骤都明确地规定要执行何种操作;第二个特征是每个步骤都可以被人或机器在有限的时间内完成 。算法除了上述两个基本特征外,还要具有第三个基本特征:虽然有些步骤可能被反复执行多次,但是在执行有限多次之后,就一定能够得到问题的解答 。
图6 算法的特征
算法比较抽象,下面讲解一个实际的算法案例,让同学们对算法有个感性认识 。对一组无序的数字进行排序,比较经典的排序算法就是冒泡排序 。
3、冒泡排序算法
冒泡排序是将一组数字多趟顺序比较,一次比较两个数字,如果他们的顺序错误就把他们交换过来,小数或(大数)逐渐往上冒,当再没有需要交换的数字时,说明该组数已经排序完成 。
对下面的一组数用冒泡排序算法,并按照从小到大的顺序排序 。
排序前的一组数,我们称为原始数列,每两个数进行一次比较,称为一轮比较 。
第一轮比较:23与34比较,23小于34,两个数不用交换位置 。
第二轮比较:34与5比较,因为34大于5,因此34和5交换位置 。
第三轮比较:34与7比较,因为34大于7,因此34与7交换位置 。

推荐阅读