二十天走进C语言的奇妙世界【2】——— 严肃的算法

太原理工机器人团队二十天学习打卡

第2章 算法——程序的灵魂

2.1 程序 = 算法 + 数据结构

一个程序主要包括以下两方面的信息:

1)对 数据 的描述。在程序中要指定用到哪些数据,以及这些数据的类型和数据的组织形式。这就是 数据结构(data structure)。

2)对 操作 的描述。要求计算机进行操作的步骤,也就是算法(algorithm)。

数据是操作的对象,操作的目的是对数据进行加工处理,以得到期望的结果。

因此,著名计算机科学家沃斯提出了一个公式: 算法+数据结构=程序,直到今天,这一公式对于过程化程序来说仍然是适用的。

2.2 什么是算法

做任何事情都有一定的步骤。这些步骤都是按一定的顺序进行的,缺一不可,次序错了也不行。从事各种工作和活动,都必须事先想好进行的步骤,然后按部就班地进行,能避免产生错乱。实际上,在日常生活中,由于已养成习惯,所以人们并没意识到每件事都需要事先设计出“行动步骤”。例如吃饭、上学、打球和做作业等,事实上都是按照一定的规律进行的,只是人们不必每次都重复考虑它而已。

不要认为只有“计算”的问题才有算法。广义地说,为解决一个问题而采取的方法和步骤,就称为“算法”。 例如,描述太极拳动作的图解,就是“太极拳的算法”。一首乐曲的乐谱,也可以称为该乐曲的算法,因为它指定了演奏该乐曲的每一个步骤,按照它的规定就能演奏出预定的曲子。

对同一个问题,可以有不同的解题方法和步骤。例如,求1+2+3+…+100,有人可能先进行1+2,再加3,再加4,一直加到100,而有的人采取这样的方法(1+100)*50,当然还可以有其他方法。当然,方法也有优劣之分。有的方法只须进行很少的步骤,而有些方法则需要较多的步骤。一般来说,希望采用方法简单、运算步骤少的方法。因此,为了有效地进行解题,不仅需要保证算法正确,还要考虑算法的质量,选择合适的算法。

当然,本文所关心的当然只限于计算机算法,即计算机能执行的算法。例如,让计算机算1×2×3×4×5,或将100个学生的成绩按高低分数的次序排列,是可以做到的,而让计算机去执行“替我理发”或“煎一份牛排”,是做不到的(至少目前如此)。计算机算法可分为两大类别:数值运算算法和非数值运算算法。数值运算的目的是求数值解,例如求方程的根、求一个函数的定积分等,都属于数值运算范围。非数值运算涉及的面十分广泛,最常见的是用于事务管理领域,例如对一批职工按姓名排序、图书检索、人事管理和行车调度管理等。目前,计算机在非数值运算方面的应用远远超过了在数值运算方面的应用。

2.3 简单的算法举例

【例 2.1】 求1 X 2 X 3 X 4 X 5。

首先,可以用最原始的方法进行:
步骤1:先求1乘以2,得到结果2。
步骤2:将步骤1得到的乘

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值