计算机科学导论笔记(六)

本文介绍了算法的基本概念,包括非正式定义、示例和动作定义,强调了顺序、判断和循环三种基本结构在算法中的重要性。此外,提到了算法的表示方法如UML和伪代码,以及如何通过细化和泛化处理算法。文章还探讨了基本算法,如求和、求积、查找和排序,并特别讨论了排序算法的选择排序、冒泡排序和插入排序。最后,文章阐述了递归的概念,包括迭代和递归定义,并指出递归在解决问题中的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

八、算法

8.1 概念

8.1.1 非正式定义

8.1.2 示例

8.1.3 定义动作

8.1.4 细化

8.1.5 泛化

8.2 三种结构

8.2.1 顺序

8.2.2 判断

8.2.3 循环

8.3 算法的表示

8.3.1 UML

8.3.2 伪代码

8.4 更正式的定义

8.5 基本算法

8.5.1 求和

8.5.2 求积

8.5.3 最大和最小值

8.5.4 排序

8.5.5 查找

8.6 子算法

8.6.1 结构图 

8.7 递归

8.7.1 迭代的定义

8.7.2 递归的定义


八、算法

8.1 概念

8.1.1 非正式定义

算法的一种非正式概念如下:算法是一种逐步解决问题或完成任务的方法

按照这种定义,算法完全独立于计算机系统。算法需要一组输入数据,并产生一组输出数据

8.1.2 示例

现在我们要得到一组输入数据(都是整数)里的最大值,为了方便分析算法,我们假设要找到五个输入数据里的最大值,显然这个任务不可能一步完成,根据小学的数学知识,这个算法可以用以下几步实现:

首先检查第一个整数,由于还没有检查其他整数,所以将最大值设为12;

检查第二个数,发现8小于12,所以最大值仍为12;

检查第三个数,发现13大于12,所以最大值变为13;

检查第四个数,发现9小于13,最大值不变;

检查第五个数,发现11小于13,最大值不变。

经过五个步骤就可以得出这组数中的最大值为13.

8.1.3 定义动作

将上述五个步骤定义为五个动作,通过算法中的这五个动作就可以找到数据中的最大值。

8.1.4 细化

为了使算法能在所有的程序中使用,还需要进行细化。现在有两个问题:第一步中的动作和其他步不一样;第二步到第五步中的程序描述语言不同。对动作进行改进后可以得到: 

8.1.5 泛化

将这个算法推广到 n 个数中找最大值,只要让计算机循环步骤一 n 次。 

8.2 三种结构

计算机专家为结构化程序或算法定义了三种结构。这种想法认为程序必定是由顺序判断(选择)循环三种结构组成的,已经证实其他结构都是不必要的。仅仅使用这三种结构就可以使程序或算法容易理解、调试或修改。

8.2.1 顺序

第一个结构称为顺序结构。算法(最终是程序)都是指令序列,可以是简单指令或是其他两种结构之一。

8.2.2 判断

有些问题只用简单指令是无法解决的。有时候需要检测一个条件,当这个条件满足时执行一系列操作;这个条件不满足时执行另外一系列操作。这就是判断(选择)结构。

8.2.3 循环

在有些问题中,相同的指令需要重复,可以使用循环结构来解决这个问题。 

8.3 算法的表示

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值