购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.4 算法的特性与算法的描述

在数据类型建立起来之后,就要对这些数据类型进行操作,建立起运算的集合即程序。运算的建立、方法好坏直接决定着计算机程序运行效率的高低。如何建立一个比较好的运算集合,这就是算法要研究的问题。

1.4.1 算法的定义

算法是描述解决问题的方法。为了解决某个问题或某类问题,需要用计算机表示成一定的操作序列。操作序列包括了一组操作,每一个操作都完成特定的功能。例如,求n个数的和的问题,其算法描述如下:

(1)定义一个变量存放n个数的和,并赋初值0(sum=0)。

(2)把n个数依次加到sum中(假设n个数存放在数组a中,for(i=0;i<n;i++)sum+=sum+a[i])。

以上算法包括两个步骤,其中括号里是C语言描述。

算法的描述可以是自然语言描述、伪代码或称为类语言描述、程序流程图及程序设计语言(如C语言)。其中,自然语言描述可以是汉语或英语等文字描述;伪代码形式类似于程序设计语言形式,但是不能直接运行;程序流程图的优点是直观,但是不易直接转化为可运行的程序;程序设计语言形式是完全采用C、C++、Java等语言描述,可以直接在计算机上运行。

1.4.2 算法的特性

算法具有以下五个特性。

(1)有穷性。有穷性指的是算法在执行有限的步骤之后,自动结束而不会出现无限循环,并且每一个步骤在可接受的时间内完成。

(2)确定性。算法的每一步都具有确定的含义,不会出现二义性。算法在一定条件下,只有一条执行路径,也就是相同的输入只能有一个唯一的输出结果,而不会出现输出结果的不确定性。

(3)可行性。算法的每一步都必须是可行的,也就是说,每一步都能够通过执行有限次数完成。

(4)输入。算法具有零个或多个输入。

(5)输出。算法至少有一个或多个输出。输出的形式可以是打印输出也可以是返回一个或多个值。

1.4.3 算法的描述

算法的描述是多样的,本节通过一个例子来学习各种算法的描述。

求两个正整数m和n的最大公约数。

利用自然语言描述最大公约数的算法如下:

(1)输入正整数m和n。

(2)m除以n,将余数送入中间变量r。

(3)判断r是否为零。如果为零,n即为所求最大公约数,算法结束。如果r不为零,则将n中的值送入m,r的值送入n,返回执行步骤(2)。

因为上述算法采用自然语言描述不具有直观性和良好的可读性,采用程序流程图描述比较直观,可读性好,但是不能直接转化为计算机程序,移植性不好。最大公约数的程序流程图如图1.9所示。下面采用类C语言描述和C语言描述。

类C语言描述如下:

图1.9 最大公约数的程序流程图

C语言描述如下:

可以看出,类语言的描述除了没有变量的定义、输入和输出的写法之外,与程序设计语言的描述的差别不大,类语言的描述可以直接转化为可以直接运行的计算机程序。本书的算法完全采用C程序设计语言描述。 74XXsq3N5BM55OY5IxaezhBh0AndV1z0QMLWknRuXHhcHa2DIpECOyzVy+XThn9s

点击中间区域
呼出菜单
上一章
目录
下一章
×