频道栏目
读书频道 > 软件开发 > c语言 > C/C++程序设计
1.3.1 算法
2014-05-05 14:43:52     我来说两句
收藏   我要投稿

本文所属图书 > C/C++程序设计

本书针对初学者的特点,采取提出问题-分析问题-解决问题-归纳提高的教学模式,突出对学习者计算思维、编程实践能力的培养与训练。全书共分为12章,全面系统地介绍了C C++语言的基本概念、语法及程序设计方法,详  立即去当当网订购

1.算法的概念

算法(algorithm)一词源于算术(algorism),即算术方法,是指一个由已知推求未知的运算过程。后来,人们把它推广到一般情况。广义地说,算法是为解决一个问题而采取的方法和步骤。算法是解决“做什么”和“怎么做”的问题。在日常生活中,算法也是普遍存在的,例如,菜谱是做菜肴的算法,洗衣机的使用说明书是操作洗衣机的算法,歌谱是一首歌曲的算法。对计算机而言算法是用计算机求解一个具体问题或执行特定任务的一组有序的操作步骤(或指令)。

程序设计的关键步骤是算法设计。算法在很大程度上决定了程序的效能。著名的计算机科学家Niklaus Wirth曾提出:

程序=数据结构+算法

其中,数据结构是对程序中数据的描述,主要是数据的类型和数据的组织形式;算法是对程序中操作的描述,即操作步骤。数据是操作的对象,操作的目的是对数据进行加工处理,以得到期望的结果。算法是灵魂,数据结构是加工对象。

通常计算机算法分为两大类:数值运算算法和非数值运算算法。数值运算是指对问题求数值解,例如,对微分方程求解、对函数的定积分求解、对高次方程求解等,都属于数值运算范围。非数值运算包括非常广泛的领域,例如,资料检索、事务管理、数据处理等。数值运算有确定的数学模型,一般都有比较成熟的算法。许多常用算法通常还会被编写成通用程序并汇编成各种程序库的形式,用户需要时可直接调用,例如,数学程序库、数学软件包等。而非数值运算的种类繁多,要求不一,很难提供统一规范的算法。在一些关于算法分析的著作中,一般也只是对典型算法作详细讨论,其他更多的非数值运算则需要用户设计其算法。

2.算法的特点

算法有5个特点,分别介绍如下:

1)有穷性。一个算法应包含有限个操作步骤。也就是说,在执行若干个操作之后,算法能正常结束,而且每一步都在合理的时间内完成。

2)确定性。算法中的每一条指令必须有确定的含义,不能有二义性,对于相同的输入必须得出相同的执行结果。

3)可行性。算法中指定的操作,都可以通过确定的、计算机能识别的基本运算执行有限次后完成。

4)有零个或多个输入。在计算机上实现的算法,是用来处理数据对象的,在大多数情况下这些数据需要通过输入而得到。

5)有一个或多个输出。算法的目的是为了求“解”,这些“解”只有通过输出才能得到。输出形式多种多样,可以输出到屏幕或打印机,也可以输出到一个磁盘文件中。

下面,以一个例子来看看算法是怎样描述计算机解题的方法和步骤的。

【例1-1】输入三个数,然后输出其中最大的数。

分析:首先,用a、b、c代表这3个数,用max代表最大数。由于一次只能比较两个数,因此,首先把a与b相比,大的数放入max中,第二次,把max与c进行比较,把大的数放入max中。此时max中存放的就是a、b、c三个数中的最大数。最后,将max输出,算法可以表示如下:

① 输入a、b、c;

② 若a>b,则max←a;否则max←b;

③ 若c>max,则max←c;

④ 此时max为最大数,输出max。

【例1-2】求解n!=1×2×3×4×5×…×(n-1)×n。

分析:在本例中可以设两个数:一个是被乘数f,另一个是乘数i,将每一步的乘积结果放入被乘数f中,算法步骤如下:

① 确定n的值;

② 令等号右边的算式项中i的初始值为1;

③ 令f中存放n!的值,且初始值为1;

④ 如果i≤n时,执行⑤,否则执行⑧;

⑤ 计算f=f×i;

⑥ 计算i=i+1;

⑦ 转去执行④;

⑧ 输出f的值,即n!的值,算法结束。

您对本文章有什么意见或着疑问吗?请到论坛讨论您的关注和建议是我们前行的参考和动力  
上一篇:1.3 算法及其表示
下一篇:1.3.2 算法的表示方法
相关文章
图文推荐
排行
热门
最新书评
特别推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站