Chap4算法解析

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2018/10/16
计算机科学基础
22
冒泡排序(以先定位大的数为例)
1
j
44 12 12 44 36
2 3
4 5 6
j j
59 36 44 43 36 59 43 44 62 43 59 43 62

查找问题
把一个特定的数据从列表中找到并提供它所在的位置(即 索引)。对于列表数据有两种基本的方法: 顺序查找 从列表的第一个数据(或叫做元素)开始,但给定的数 据和表中的数据匹配时,查找过程结束,给出这个数据 所在表中的位置。 折半查找 也叫二分法,从列表的一半开始,比较列表处于一半 (中间)位置的数据,判断是在前半部分还是后半部分 (根据列表的排序确定的)。
2018/10/16
计算机科学基础
9
顺序结构
A
B
Yes
分支结构
No
条件
A
B
2018/10/16
计算机科学基础
10
A 条件 No Yes
A
No 条件 Yes
(a)While结构
(b) Until结构
2018/10/16
计算机科学基础
11
4.3 算法的表示和发现

算法的表示是为了把算法以某种形式加以表达, 因此一个算法的表示可以有不同的方法,常用的:

3
解决问题的 思想方法: 步骤描述
用某语言表达 的算法过程: 指令集合
解决
算法
逻辑描述
问题
问题的数据表示
程序
算法举例
求两个正整数A和B的最大公约数(GCD) 算法一:逐个验证方法 算法二:欧几里德(Euclid)方法

5
逐个验证算法
第一步:比较A和B这两个数:
A设置为较大的数,B为较小的数;
○ 选择法排序
把表中最小的数找到并放入第一个位置,然后比较余下的 数,找到次小的数放到第二个位置,直到对所有数据全部 扫描过。 ○ 冒泡法排序。 从列表的最后开始比较相邻的两个数,将较小的向前移动, 再和前一个相邻的数据比较,同样把较小的数向前移动, 直到列表的开始。接着继续这个过程,找到的次小的数排 到列表的第二个位置,依次类推,直到结束。
2018/10/16 8
4.2 算法的三种结构
根据结构化程序设计,所有的程序都由三种结构构成: 顺序结构
最简单的一种结构,它使计算机按照命令出现的先后顺序依次执行
循环结构
使计算机按照设定的条件重复执行一组命令
分支结构
在程序执行过程中 ,根据设定的条件来决定程序的执行方向
结构化程序要求任何程序只有一个入口和出口,程序中没有 执行不到的语句,也没有无限循环发生。
2018/10/16
计算机科学基础
24
[例] 假设有13个数据元素,它们的关键字为 51,202,16, 321,45,98,100,501,226,39,368,5,444。若 按关键字由小到大顺序存放这13个数,二分查找关健字为 444的数据元素过程如下:
算法的发现

解决问题的4个步骤:
1.理解问题 2.设计一个解决问题的方案 3.执行这个方案 4.检验这个方案
2018/10/16
计算机科学基础
18
4.4 算法的举例
理解常用的算法进而体会算法的发现、设计,是大 多数学习计算机的人所采用的学习方法。 基本算法

求和 累积 求最大值和最小值 求数的位数
计算机科学基础
20

递归
递归是算法的自我调用 例:求N的阶乘。
2018/10/16
计算机科学基础
21

排序
迭代的延续应用。是将一组原始数据按照递增或递减的规 律进行重新排列的算法。排序不仅用在数值方面,也用在 文本处理中。排序规则是递增或递减,其输出是原数据的 一种重新排列。
常用的方法有:(如果是从小到大排序的话)
第四章 算法基础
Overview
概述 算法的三种结构 算法的表示和发现
算法举例
算法的方法学
数据表达和数据结构
2018/10/16
计算机科学基础
2
4.1 概述
为解决问题而采用的方法和步骤就是算法。 算法的质量直接影响程序运行的效率。 根据图灵理论,只要能够被分解为有限步骤的问 题就可以被计算机执行。 算法的正式定义:算法是求解问题步骤的有序集 合,它能够产生结果并在有限时间内结束。
2018/10/16 13
例:伪代码 求N!的算法
2018/10/16
计算机科学基础
14
wenku.baidu.com
例:伪代码 求N!的算法
2018/10/16
计算机科学基础
15
例:流程图 求N!的算法
1 P, 1 I
2018/10/16
计算机科学基础
16
例:流程图(以 Raptor工具为例) 求N!的算法
2018/10/16 17
自然语言(容易歧义) 伪代码(不能被计算机执行) 流程图(Raptor)
2018/10/16
计算机科学基础
12
例: 用自然语言描述求N!的算 法 1、读入正整数N 2、对i从1到N,依次与初值为1的p相乘,并把 结果存于p中 3、p中的值就是N! 4、输出p 自然语言描述的优缺点 优点:容易把握算法主要思路; 缺点:不够严密,有时会出现多义性,不容易 对应程序设计语言的描述。
7
算法的特性
确定性:相同的输入,通过同一算法的计算,输出结


果应该是相同的,即不会由于在不同时间、不同地点 、采用不同计算机计算,会导致不同结果。 有穷性:算法中的步骤应该是有限的,否则计算机就 会永远无休止地执行程序。但是,即便是在某台计算 机上运行了长达数年,只要能够结束,也称为算法。 有效性:算法中的每一个步骤都应该被有效地执行 可有零个或多个输入 有一个或多个输出
第二步:i从B到1循环执行第三步;
第三步:如果i能够整除A和B,则最大公约数就是i, 程序结束;否则重复进行第二步、第三步。
2018/10/16 6
欧几里德(Euclid)算法
第一步:比较A和B这两个数:A设置为较大的数,
B 为较小的数;
第二步:A除以B,得到余数C;
第三步:如果C等于0,则最大公约数就是B, 程序结束; 否则将B赋值给A,C赋值给B; 重复进行第二步、第三步。
2018/10/16
计算机科学基础
19

迭代
一种建立在循环基础上的算法。 举例:“判断一个整数是否为素数”的迭代算法
算法思路:素数是指只能被1和它本身整除的数。判断它的方法为:
将n(设n是要被判断的整数)作为被除数,用2~(n-1)之间的各 个整数轮流去除,如果都不能整除,则n是素数。
2018/10/16
相关文档
最新文档