算法伪代码
计算机基础自学算法伪代码

栈是一种后进先出的数据结构,递归算法可以利 用栈的特点实现,如斐波那契数列等。
数据结构与算法的选择原则
问题需求
01
根据问题的需求选择合适的数据结构和算法,以满足时间复杂
度和空间复杂度的要求。
数据特点
02
根据数据的特性选择合适的数据结构,如处理大量数据时选择
合适的数据存储方式。
实际应用场景
不同的数据结构适用于不同类型 的问题,选择合适的数据结构能 够更好地解决问题。
常见数据结构与算法的结合使用
1 2 3
数组与排序算法
数组是一种常见的数据结构,排序算法如冒泡排 序、插入排序等可以在数组上实现。
链表与图算法
链表适用于需要频繁插入和删除节点的场景,图 算法如广度优先搜索、深度优先搜索等可以在链 表上实现。
计算机基础自学算法 伪代码
目录
• 算法概述 • 基础算法 • 数据结构与算法关系 • 算法优化与复杂度分析 • 实践案例
01
算法概述
算法的定义与特性
定义
算法是一组明确的、有序的、有 限的步骤,用于解决某一问题或 完成某项任务。
特性
有穷性、确定性、可行性、输入 和输出。
算法的表示方法
自然语言
用文字描述算法步骤。
数成正比。
02
线性时间复杂度
算法的时间复杂度为O(n),表示算 法执行时间与输入规模n成正比。
04
多项式时间复杂度
算法的时间复杂度为O(n^k),其中 k为常数,表示算法执行时间与输
入规模n的k次方成正比。
空间复杂度分析
线性空间复杂度
算法的空间复杂度为O(n),表示算法所需 额外空间与输入规模n成正比。
算法设计与分析部分算法伪代码

第三章 蛮力法1.选择排序SelectionSort(A[0..n-1])for i=0 to n-2 domin=ifor j=i+1 to n-1 doif A[j]<A[min]min=jswap A[i] and A[min]2.冒泡排序BubbleSort(A[0..n-1])// 输入:数组A,数组中的元素属于某偏序集// 输出:按升序排列的数组Afor i=0 to n-2 dofor j=0 to n-2-i doif A[j+1]<A[j] swap A[j] and A[j+1]3.改进的冒泡算法ALGORITHM BubbleSortImproved( A[0,…,n –1] )// 冒泡排序算法的改进// 输入:数组A,数组中的元素属于某偏序集// 输出:按升序排列的数组Afor i ← 0 to n – 2 doflag ← Truefor j ← 0 to n – 2 – i doif A[j+1] < A[j]swap(A[j], A[j+1])flag ← False// 如果在某一轮的比较中没有交换,则flag为True,算法结束returnif flag = True4. 顺序查找算法算法 SwquentialSearch2(A[0...n],k)//顺序查找算法的实现,它用了查找键来作限位器//输入:一个n个元素的数组A和一个查找键K//输出:第一个值等于K的元素的位置,如果找不到这样的元素就返回 -1A[n]<--ki<--0while A[i]!=K doi<--i+1if i<n return iElse return -15. 蛮力字符串匹配算法 BruteForceStringMatch(T[0...n-1],P[0...m-1])//该算法实现了蛮力字符串匹配代表一段文本//输入:一个n个字符的数组T[0...n-1]// 一个m个字符的数组P[0..m-1]代表一个模式//输出:如果查找成功的话,返回文本的第一个匹配字串中第一个字符的位置, // 否则返回-1For i<--0 to n-m doj<--0While j<m and P[j]=T[i+j]doj<--i+1If j=m return ireturn -1合并排序最差Θ(nlog2n)快速排序最优Θ(nlog2n)最差Θ(n2)平均Θ(1.38nlog2n)选择排序 Θ(n2)冒泡排序 Θ(n2)插入排序最差Θ(n2)最优 Θ(n)平均 Θ(n2)第四章 分治法合并排序算法 MergeSort(A[0..n-1] )排序 // 递归调用mergesort来对数组 A[0...n-1]// 输入:一个可排序数组A[0..n-1]// 输出:非降序排列的数组A[0..n-1]if n > 1n/2 -1]copy A[0.. n/2 -1] to B[0..n/2 -1]copy A[ n/2 ..n-1] to C[0..MergeSort( B )MergeSort( C )Merge( B,C,A )两个数组合并的算法算法 Merge(B[0..p-1],C[0..q-1],A[0..p+q-1])//将两个有序数组合并成一个有序的数组和C[0...q-1]//输入:两个有序数组B[0...p-1]//输出:A[0..p+q-1]中已经有序存放了B和C中的元素 i=0,j=0,k=0;while i<p and j<q do≤C[j]if B[i]A[k]=B[i], i=i+1elseA[k]=C[j], j=j+1k=k+1if i=pcopy C[j..q-1] to A[k..p+q-1]elsecopy B[i..p-1] to A[0..p+q-1]快速排序算法QuickSort(A[l..r])// 使用快速排序法对序列或者子序列排序或者序列本身A[0..n-1]// 输入:子序列A[l..r]// 输出:非递减序列Aif l < rs ← Partition( A[l..r] )QuickSort( A[l..s-1] )QuickSort( A[s+1..r] )//s是中轴元素/基准点,是数组分区位置的标志实现分区的算法Partition( A[l..r] )// 输入:子数组A[l..r]// 输出:分裂点/基准点pivot的位置p ← A[l]i ← l; j ← r+1repeat≥ prepeat i ←i + 1until A[i]≤ prepeat j ← j – 1 until A[j]swap( A[i], A[j] )≥ juntil iswap( A[i], A[j] )swap( A[l], A[j] )return j折半查找BinarySearch( A[0..n-1], k )// 输入:已排序大小为n的序列A,待搜索对象k// 输出:如果搜索成功,则返回k的位置,否则返回-1 l=0,r=n-1;While l≤rmid= (l+r)/2if k = A[mid] return midelse if k < A[mid] r=m-1else l=m+1return -1Strassen矩阵Strassen方法M1=A11(B12-B22)M2=(A11+A12)B22M3=(A21+A22)B11M4=A22(B21-B11)M5=(A11+A22)(B11+B22)M6=(A12-A22)(B21+B22)M7=(A11-A21)(B11+B12)第五章 减治法插入排序ALGORITHM InsertionSort( A[0..n-1] )// 对给定序列进行直接插入排序// 输入:大小为n的无序序列A// 输出:按非递减排列的序列Afor i ← 1 to n-1 dotemp ← A[i]j ← i-1while j ≥ 0 and A[j] > temp doA[j+1] ← A[j]j ← j –1A[j+1] ←temp深度优先查找算法 BFS(G)//实现给定图的深度优先查找遍历//输入:图G=<V,E>//输出:图G的顶点,按照被DFS遍历第一次访问到的先后次序,用连续的整数标记,将V中的每个顶点标记为0,表示还“未访问”count =0//记录这是第几个访问的节点标记为 unvisitedmark each vertex with 0//∈ V dofor each vertex vif v is marked with 0dfs(v)dfs(v)//递归访问所有和v相连接的未访问顶点,然后按照全局变量count的值//根据遇到它们的先后顺序,给它们附上相应的数字count = count + 1mark v with countv dofor each vertexw adjacent toif w is marked with 0dfs(w)广度优先BFS(G)/实现给定图的深度优先查找遍历//输入:图G=<V,E>//输出:图G的顶点,按照被BFS遍历第一次访问到的先后次序,用连续的整数标记,将V中的每个顶点标记为0,表示还“未访问”count =0mark each vertex with 0for each vertex v∈ V dobfs(v)bfs(v)//递归访问所有和v相连接的未访问顶点,然后按照全局变量count的值//根据遇到它们的先后顺序,给它们附上相应的数字count = count + 1mark v with countinitialize queue with vwhile queue is not empty doa = front of queuefor each vertex w adjacent to a doif w is marked with 0count = count + 1mark w with countadd w to the end of the queueremove a from the front of the queue拓扑排序第六章 变治法Gauss消去法GaussElimination(A[1..n], b[1..n])// 输入:系数矩阵A及常数项 b// 输出:方程组的增广矩阵等价的上三角矩阵for i=1 to n doA[i][n+1] =b[i]for j= i+1 to n dofor k = i to n+1 do– A[i][k]*A[j][i]/A[i][i]A[j][k] = A[j][k]堆排序堆排序主要包括两个步骤:对于给定的数组构造相应的堆。
m-h算法的伪代码

M-H算法,即Metropolis-Hastings算法,是一种用于从概率分布中抽样的Markov Chain Monte Carlo(MCMC)方法。
这种算法是在给定概率分布的情况下,生成满足该概率分布的样本。
以下是M-H算法的典型伪代码:
假设我们要对概率分布π(x)进行采样,具体的M-H算法伪代码如下:
1. 初始化:随机选择一个起始样本x_0
2. 对于第i个采样,重复以下步骤:
a. 从提议分布q(x'|x_{i-1})中抽取一个候选样本x'(接受-拒绝采样)
b. 计算接受率α=min(1, π(x')q(x_{i-1}|x') / (π(x_{i-1})q(x'|x_{i-1})))
c. 以概率α接受候选样本:生成一个随机数u~U(0,1),如果u<α,则接受候选样本,即x_i = x',否则拒绝候选样本,即x_i = x_{i-1}
在这里,π(x)是我们要采样的目标分布,q(x'|x)是建议分布(提议分布),U(0,1)表示从0到1的均匀分布。
通过迭代这些步骤,就可以从目标概率分布π(x)中生成样本序列{x_0,x_1,...}。
需要注意的是,提议分布q(x'|x)的选择对采样效率和收敛性有很大影响,因此在实际应用中需要根据具体情况选择合适的提议分布。
用伪代码描述算法欧几里得算法

用伪代码描述算法欧几里得算法欧几里得算法,也称为辗转相除法,是求解两个非零整数的最大公约数的一种常用方法。
这个算法的基本思想是通过用两个非负整数的最小的余数来取代原来的两个整数,不断地进行欧几里得算法迭代,直到余数为零为止。
在本篇中,将使用伪代码来描述欧几里得算法的过程。
伪代码描述算法欧几里得算法如下:```算法GCD(m,n)输入:两个非零整数m和n输出:m和n的最大公约数若n等于零,则返回m作为结果否则,执行下面的步骤:r=m%n//计算m除以n的余数返回GCD(n,r)//递归调用GCD函数,传入参数为n和r```根据这个伪代码,我们可以将算法分解为以下步骤:1.首先,检查输入的第二个数,也就是n,是否为零。
如果是零,则返回输入的第一个数m作为结果,因为任何数与零的最大公约数都是自身。
2.如果第二个数n不为零,则计算m除以n的余数,将结果保存在变量r中。
3.然后,再次调用GCD函数,传入参数为n和r,以递归的方式求解n和r的最大公约数。
此时,问题的规模变小了,因为我们将原来的第二个数n变成了新的第一个数,而余数r变成了新的第二个数。
4.重复上述步骤,直到余数为零。
此时,上一步得到的第二个数就是原始输入中的最大公约数。
5.返回最大公约数作为结果。
通过这个伪代码描述的算法,我们可以清晰地看到欧几里得算法的基本过程。
它利用了递归的思想,不断地将原始问题分解为规模更小的子问题,直到达到停止条件为止。
算法的时间复杂度与输入的大小呈线性关系,因此它是一种时间效率较高的算法。
以下是一个示例,展示如何使用欧几里得算法来计算两个数的最大公约数:```输入:m=42,n=56输出:14开始执行GCD(42,56):n不为零,继续执行下面的步骤计算r=42%56=42调用GCD(56,42):n不为零计算r=56%42=14调用GCD(42,14):n不为零,继续执行下面的步骤计算r=42%14=0r等于零,停止递归返回最后的第二个数14作为结果```通过这个示例,我们可以看到欧几里得算法如何不断地计算余数,直到找到最后的结果。
fom算法伪代码

fom算法伪代码
在上述伪代码中,FOM算法接受一个特征模型FM和一个约束集合C作为输入,并输出特 征模型的配置集合。算法使用递归的方式遍历特征模型中的每个特征,根据约束集合C对特 征进行过滤。如果特征满足约束集合中的任何约束,则将特征添加到配置中,并递归调用 FOM算法对剩余的特征进行配置。最终生成的配置将与配置集合合并或添加到配置集合中, 并返回配置集合作为输出。
fom算法伪代码
FOM(Feature Oriented Modeling)算法是一种用于特征建模的算法。以下是FOM算
法的伪代码示例:
输入:特征模型FM,约束集合C 输出:igSet 初始化为空集合 遍历特征模型FM中的每个特征feature:
请注意,上述伪代码仅为FOM算法的一种示例,具体的实现可能会根据实际需求和编程 语言的不同而有所调整。
如果 feature 不满足约束集合C中的任何约束: 跳过当前特征,继续下一个特征
否则: 生成一个新的配置 config 将 feature 添加到 config 中 递归调用 FOM(FM, C) 对剩余的特征进行配置 如果配置集合不为空: 将新生成的配置 config 与配置集合 configSet 合并 否则: 将新生成的配置 config 添加到配置集合 configSet 中
中文算法伪代码

中文算法伪代码概述在计算机科学中,算法是解决问题的方法和步骤的描述,而伪代码则是一种类似于编程语言的抽象描述方式。
中文算法伪代码指的是用中文语言描述算法的伪代码,相比其他语言的伪代码,它更便于理解和使用。
本文将从以下几个方面详细探讨中文算法伪代码。
为什么需要中文算法伪代码对于非专业的程序员或计算机科学领域的新手来说,掌握一门编程语言的语法和规则可能是一项具有挑战性的任务。
而使用中文算法伪代码,可以将复杂的编程概念用更简单易懂的中文语言进行描述,极大地降低了学习和理解的难度。
此外,中文算法伪代码还可以方便非程序员之间的沟通和交流,使得更多人能够参与到算法设计和问题解决中。
中文算法伪代码的语法规则中文算法伪代码的语法规则主要包括以下几个方面:关键字与其他编程语言类似,中文算法伪代码也有一些关键字用来表示不同的操作和控制结构,例如「如果」、「那么」、「否则」等。
这些关键字用来描述算法的逻辑流程和条件判断。
注释中文算法伪代码的注释使用「注释:」关键字进行标识,以帮助读者理解代码的意图和目的。
注释可以用来解释算法中的特殊处理或者对某段代码的说明。
变量和赋值中文算法伪代码可以使用中文词语作为变量名,程序员可以根据实际情况选择合适的命名方式。
赋值操作使用「赋值给」的关键字进行表示,例如「x 赋值给 5」表示将 x 的值设置为 5。
控制结构中文算法伪代码支持常见的控制结构,例如条件判断、循环和函数定义等。
条件判断使用「如果」、「那么」和「否则」关键字进行表示;循环使用「重复」和「直到」关键字进行表示;函数定义使用「定义」和「为」关键字进行表示。
函数调用中文算法伪代码可以使用函数调用来实现代码的模块化和重用。
函数调用使用「调用」和「函数名」进行表示,例如「调用求和函数」表示调用名为「求和函数」的函数。
示例中文算法伪代码下面是一个计算斐波那契数列的算法的示例中文算法伪代码:从键盘输入一个正整数 n如果 n 小于等于 0则输出错误信息并结束否则定义函数求斐波那契数列如果 n 等于 1 或者 n 等于 2则返回 1否则返回求斐波那契数列(n-1) 加上求斐波那契数列(n-2)调用求斐波那契数列函数并输出结果结束在以上示例中,使用了中文关键字来描述算法的逻辑流程,使得代码更加易懂。
动量算法的伪代码

动量算法的伪代码
动量算法是一种常用于优化问题的迭代算法。
它模拟了物理学中的动量概念,通过考虑上一次迭代的方向和速度来指导下一次迭代的方向和速度。
下面是动量算法的伪代码:
初始化参数:
learning_rate = 0.01 # 学习率
momentum = 0.9 # 动量因子
iterations = 1000 # 迭代次数
初始化变量:
velocity = 0 # 初始速度
对于每次迭代:
计算梯度:
gradient = compute_gradient(parameters)
更新速度:
velocity = momentum * velocity - learning_rate * gradient
更新参数:
parameters = parameters + velocity
返回最优参数
以上是动量算法的伪代码。
在每次迭代中,我们首先计算梯度,然后根据当前速度和梯度更新速度。
最后,根据更新后的速度更新参数。
这样,通过考虑历史速度信息,动量算法可以帮助我们更快地收敛到最优解。
动量算法在优化问题中广泛应用,特别是在深度学习中。
它可以帮助我们在复杂的优化空间中更好地搜索并找到最优解。
通过使用动量算法,我们可以更快地训练神经网络,并提高其性能。
动量算法是一种有效的优化算法,它通过模拟物理学中的动量概念来指导优化过程。
它能够加速收敛并提高优化结果的质量。
在实际应用中,我们可以根据问题的特点来调整学习率和动量因子,以获得更好的优化效果。
几种排序算法的伪代码.doc

几种排序算法的伪代码.doc
一、冒泡排序
伪代码:
(1)设置一个标记flag,用于判断是否发生了数据的交换,初始设置为TRUE
(2)重复以下操作:
A、从第0个位置开始,比较相邻的数据;若第0个数据比第1个数据大,则将它们交换,否则直接跳过;然后,从第1个位置开始,比较相邻的数据;若第1个数据比第2个数据大,则将它们交换,否则直接跳过……
B、若这次循环发生了交换(若发生交换,flag将变为TRUE),则重复上面提到的A 步;若此次循环没有发生交换(若没有发生交换,flag将变为FALSE),则结束此次循环
(3)结束时若flag为FALSE,表明已排序完毕
(1)首先,找到数组的中心点元素作为对比元素
(2)从数组的头部开始遍历,当遇到比中心点元素小的元素时,将其加入其后面一个指针位置,由此序列小于中心点元素的序列将被形成
(4)数组以序列小于中心点元素和大于中心点元素两个序列分割,重复(1)、(2)、(3)步骤,直至数组的末尾
(5)排序完成
(1)从第0个位置开始,将第1个元素赋值给暂存变量
(2)比较暂存变量与第0个元素,若暂存变量比第0个元素小,则将暂存变量插入到第0个位置,此过程结束;否则,将第0个元素整体后移一位,并将暂存变量插入到第0个位置,此过程结束
(3)重复以上过程,直至最后一个元素完成排序。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Introduction to CS - Xiaofeng Gao
25
流程图表示
2016/10/1
Introduction to CS - Xiaofeng Gao
26
Xiaofeng Gao
CONTINUE;
2016/10/1
停止当前循环进入下一轮
Introduction to CS - Xiaofeng Gao
21
Break和Continue
执行顺序
i=1,Print i=2,跳过 i=3,Print i=4,跳过 i=5,Break
2016/10/1
经过两次比较,max中已存放的是a,b,c三个
数中最大的数,把 max 的值输出就是所需结果。
2016/10/1
Introduction to CS - Xiaofeng Gao
23
伪码(1)
2016/10/1
Introduction to CS - Xiaofeng Gao
24
伪码(2)
2016/10/1
有的程序要加入对操作对象的说明。
有时指令要求执行者做出判断。 一条或一组指令可能需要执行多次。 程序流程:
问题定义算法设计程序编制调试测试及资料编制
2016/10/1
Introduction to CS - Xiaofeng Gao
3
算法特性
程序设计离不开算法,
算法指导程序设计,是 程序的灵魂。算法是精 确定义的一系列规则。 算法特性:
7
流程图表示法
流程图表示法常用图例
2016/10/1
Introduction to CS - Xiaofeng Gao
8
顺序结构的流程图表示
顺序结构是一种简单的线性结
构,根据流程线所示的方向, 各矩形框按顺序执行。
如:右图语句的执行顺序为:
A→B→C
2016/10/1
Introduction to CS - Xiaofeng Gao
<简单条件><逻辑连接符><简单条件> 例: 合取:(a<b+c)∧(b<a+c)∧(c<a+b) 析取:(x=5)∨(x=8) 有时也用and,or来表示
2016/10/1
Introduction to CS - Xiaofeng Gao
13
While型循环控制语句
WHILE:循环语句,在初始阶
有效性指算法所规定的操 作都应当能够有效执行。 确定性一是:所描述的操作 应当具有明确的意义,不 应当有歧义性。 二是: 操作作序列只有一 个初始动作,序列中每一 动作仅有一个后继动作;
(1)有效性。 (2)确定性。 有穷性指算法所规定的操 (3)有穷性。 (4)有零个或多个输入。 作序列必须在允许的时间 内结束。 (5)有一个或多个输出。
的代码的集合。
程序设计:根据所提出的任务,用某种程序设计
语言编制一个能正确完成该任务的计算机程序。
程序=数据结构+算法
——Nikiklaus Wirth
(沃思,著名计算机科学家)
2016/10/1
Introduction to CS - Xiaofeng Gao
2
程序的性质
程序指令顺序执行。 程序执行结束时应有一个结果。 程序要对某些对象进行操作。
11
顺序结构的流程图表示
(a) (b)
(a)的执行顺序为:先判断条件,当条件为真时,执行A,否 则执行B。 (b)的执行顺序为:先判断条件,当条件为真时,执行A,否 则什么也不执行。
2016/10/1
Introduction to CS - Xiaofeng Gao
12
复合条件控制语句
格式:
Introduction to CS - Xiaofeng Gao
6
基本控制语句
赋值语句:中间变量定义等,用←表示。
有时也用 :=或者= 表示赋值
线性表述(顺序结构,SEQUENCE),下一个命令
会在当前命令结束时开始。
x =?
2016/10/1
Introduction to CS - Xiaofeng Gao
18
嵌套叠加
基本控制语句可
以嵌套叠加,由 缩进严格控制。 判断Judge的功 能。 这个算法能够判
断一个自然数是 否是质数。
2016/10/1
Introduction to CS - Xiaofeng Gao
19
子函数引入(subfunction)
用调用函数名形式引入子函数
2016/10/1
可描述整个算法运行过程的结构,表述算法功能
(而不是其语言实现)。用于技术文档和科学出 版物中来表示算法,也用于在软件开发的实际编 码过程之前表达程序的逻辑。
2016/10/1
Introduction to CS - Xiaofeng Gao
5
算法名称与初始化
无参数表示
带参数表示
2016/10/1
Introduction to CS - Xiaofeng Gao
20
常用表达
i++;++i; x /= 2; x:= 0; 将变量i的值加1 x=x/2 x赋值为0
y == z;
判断y与z是否相等
For(i=1 to 10); For循环控制语句 A&&B; A||B; BREAK; A 和B A 或B 停止循环跳出
9
选择控制语句
IF-THEN-ELSE:基本选择语句,选择结构,其中
else可选,还可插入多项ELSEIF
2016/10/1
Introduction to CS - Xiaofeng Gao
10
选择控制语句示例
整除标记 作业批改
2016/10/1
Introduction to CS - Xiaofeng Gao
算法伪代码
(Pseudo Code)
高晓沨 (Xiaofeng Gao)
Department of Computer Science Shanghai Jiao Tong Univ.
程序的概念
程序(Program):可以被计算机处理的指令序列。
程序是为完成一项任务、由汇编语言或高级语言编写
2016/10/1
Introduction to CS - Xiaofeng Gao
4
算法伪代码(Pseudocode)
伪代码(Pseudocode):一种算法描述语言,使之
可用任何编程语言(Pascal, C, Java, etc)实现。 伪代码特点:
结构清晰、代码简单、可读性好。 类似自然语言,介于自然语言与编程语言之间。 以编程语言的书写形式指明算法职能。 不用拘泥于具体实现。
FOR:循环次数受限的循环语句。(counting loop)
Example
2016/10/1
Introduction to CS - Xiaofeng Gao
17
多分支选择控制语句
SWITCH-CASE:多分支选择语句(default optional)
2016/10/1
Introduction to CS - Xiaofeng Gao
A被称为循
Introduction to CS - Xiaofeng Gao
15
While型循环控制语句示例
Remainder GCD
2016/10/1
Introduction to CS - Xiaofeng Gao
16
For型循环控制语句
段判断条件。当条件为真时执 行循环,条件为假时跳出循环。
REPEAT-UNTIL:循环语句,在
循环尾部进行控制。条件为真 时跳出。
有时也做DO-WHILE
2016/10/1
Introduction to CS - Xiaofeng Gao
14
While型结构的流程图表示
①while型(当型)循环 重复判断条件、如果条件为 真则执行 A ,一但条件为假 ,则跳出循环。 ②do-while(直到型)型循环 先执行A,再判断条件,若条 件为真则重复执行A,若条件 为假,则跳出循环。
Introduction to CS - Xiaofeng Gao
22
范例
例:找出三个数中最大的那个数。
分析:三个数值必须用三个变量来保存,假定
这三个变量分别为 a 、 b 、 c ,另外,还需要一 个变量max来装最小的那个数。
先比较 a 和 b的值,把数值大的放入 max 中,再
将max与c比较,又把数值大的放入max中。