(1.31)--4.2 典型算法举例大学计算机.pdfVIP

  • 0
  • 0
  • 约3.19千字
  • 约 14页
  • 2023-12-06 发布于陕西
  • 举报

HeilongjiangInstituteofTechnology

大学计算机

——计算思维视角

章名:算法与程序设计

节名:典型算法举例

主讲人:

目录

Contents

1穷举法

2递归

3排序

编程中的思维问题

•编程能够训练思维,编程体现了一种抽象交互

关系,自动化执行的思维模式;

•用计算机求解一个实际问题,首先要从这个实

际问题中抽象出一个数学模型(如数学公式),

然后设计一个求解该数学模型的算法。

•哥尼斯堡七桥问题:将实际问题抽象成图。

典型算法举例

为了提高计算机的工作效率,人们通过长时

间的研究开发,总结了一些典型算法,在应用中非

常普遍。

穷举递归排序

•水仙花数•汉诺塔•揑入排序

•冒泡排序

•破译密码•求阶乘

•选择排序

•……

•百元买百鸡

穷举法

穷举法(又称“枚举法”)基本思想是:

按问题本身的性质,通过多重循环,一一

列举各种可能的情况,并判断哪一种可能是符

合要求的解(丌能遗漏,也丌能重复),并在

逐一列举的过程中,检验每个可能的解是否是

问题的真正解,若是,我们采用这个解,否则

抛弃它。

穷举法

举例-百钱买百鸡

例:鸡翁一,值钱五、鸡母一,值钱三、

鸡雏三,值钱一,百钱买百鸡,问鸡翁、

鸡母、鸡雏各几个?

•分析:设鸡翁、鸡母、鸡雏的数量分别为

x、y、z,则可得如下模型:

•5*x+3*y+z/3.0=100

•x+y+z=100

穷举法

举例-百元买百鸡

百鸡问题算法描述:

公鸡的数目从0遍历到20

母鸡的数目从0遍历到33

小鸡的数目从0遍历到99

如果5*x+3*y+z/3.0=100

并且x+y+z=100

则输出公鸡的数目、母鸡的数目、小鸡

的数目。

递归

用自身的结构来描述自身,称为递归。是利用问题本身所具有的

某种递推关系求解问题的一种方法。

思考:什么时候需要采用递归方法?

问题分解

……

递归举例——阶乘问题

递归举例——阶乘问题

递归过程不递归工作栈

•递归过程在实现时,需要自己调用自己。

•层层向下递归,返回次序正好相反。

排序

排序含义:按数据队列的某个关键字,重新

按一定规律排列其队列(升序/降序)。

实现排序的方法:

•选择法

•冒泡法(气泡上浮法)

•插入法

•……

排序举例-冒泡排序

算法名字由来:越大的元素会经过交换慢

慢“浮”到数列的顶端。用冒泡法对6个数排序(从小到大)

初始状态:数据无序

在一组数中,自前而后对相邻的两个

数依次进行比较和调整,让需要的数9

文档评论(0)

1亿VIP精品文档

相关文档