算法基础知识
算法的概念与特征:
算法:为解决某一问题而设计的确定的有限的步骤。 主要特征:
有穷性: 一个算法必须保证执行有限步骤之后结束。 确切性: 算法的每一步骤必须有确切的含义。
能行性: 算法的每一步骤都能有效地执行,并得到确定的结果。 输入:一个算法有0个或多个输入。
输出:一个算法有一个或多个输出,没有输出的算法是毫无意义的。
算法的描述方法:
用自然语言表达; 用流程图表达;
用伪代码(或程序)表达。 流程图最常用的符号:
起止框; 输入输出框; 处理框; 判断框; 流程线和连接圈。 用计算机解决问题的一般过程:
分析问题; 设计算法; 编写程序; 上机调试和维护。
算法中基本步骤: 输入-处理-输出。
常量:指在程序执行过程中事先设置、其值不发生改变的量,即一个具体的
数值。 变量:
变量:指在程序运行过程中,取值可以改变的量,一般用字母表示。在
计算机内部变量对应了一定的存储单元。 变量命名的基本规则
只能由字母、数字和下划线三类字符组成,但第一个字符必须是字母。 字母大小写都可以,变量名长度适当。 变量名与实际意义
变量类型:数值型、字符型、布尔型 VB中变量类型标示符:
数值型:整数 integer,长整数 long,单精度实数 single,
双精度实数 double 字符型:string 布尔型:boolean
变量声明格式:Dim 变量名 As 变量类型,如:Dim sum As Double
数组变量:一组有相同特征的数组成一组,称为数组变量。
组成数组的各个变量称为数组的元素,一个数组变量中的各个元素
拥有一个共同的数组变量名,通过下标(一个从1开始的整数值)指出数组变量中的各个元素,也指出了该元素在数组变量中的位置。 分清数组变量、数组变量名、数组元素、数组元素名、数组元素下标、数组元素值等概念。 数组变量声明格式:Dim 数组名(下标起始值 to 下标终止值) As 变
量类型,如:Dim a(1 to 100) As Double
变量赋值的格式:
变量←常量 或变量←变量。 变量=常量 或变量=变量 功能:
将赋值号右边常量的值或变量的值存放在左边变量名对应的存储单元中,成为左边变量的值。 运算符及运算次序:
算术运算符 *、/、 \\、 mod、 +、-。(特例:-9 mod 4返回-1) 字符运算符 &或+。
关系运算符 >、<、>=、<=、=、<>。 逻辑运算符 not 、and、or。
算术运算最优先,关系运算次之,最后为逻辑运算,括号可以改变次序。 表达式:
表达式:指用运算符将常量、变量连接起来有意义的式子。 表达式的类型: 算术表达式。 字符表达式。 关系表达式。
逻辑表达式。
采用列表法记录变量值变化的过程与结果
a=2 b=3 b=a+b b=a-b a=a-b 说明:
a 2 5 b 3 5 -3 c d * 有关概念要注意准确和清晰,切忌模糊。
* 各知识点的落实,要在解决问题的流程图中统一体现。
算法的三种基本结构
顺序结构(顺序模式):
严格按照先后顺序执行各个步骤的算法结构。
常用函数
sqr(x)算术平方根 abs(x)绝对值
int(x)取整函数(不大于x的最小整数)(特例:int(-9.4) 返回-10) 说明:
* 顺序结构不难理解,在这部分注意巩固有关变量、变量值、表达式的相
关知识,以及有关函数的知识。
* 结合顺序结构,体会计算机解决问题的环节:输入——处理——输出,
后面分支结构和循环结构主要解决处理环节中的各种变化,在顺序结构中,把输入、输出环节的问题解决,就能为后两种结构学习扫除障碍。 * 取整函数int(x)和mod运算的应用,交换两个变量的值是解决问题中
常用工具和算法,理解掌握这部分内容,就为以后应用创造了条件。
分支结构(选择模式):
根据给定条件是否成立而决定执行不同步骤的算法结构。
分支的条件设定 判断框及规范使用 基本模式:
双分支结构:根据给定条件是否成立,分别执行不同语句块的分支结构。 单分支结构:当给定条件成立时,执行指定的语句块,给定条件不成立时,直接退出的分支结构。 流程图规范画法:
流程线,走直角,自上而下。
双分支结构中,条件判断的是、非结果左右分列;单分支结构中,条件判断成立时,往下执行预定步骤,否则跳过预定步骤。
无论单、双分支都一定有判断框和汇聚点,判断框是选择的开始,汇聚点是选择的结束。
判断框有一个入口,两个出口,而分支结构只有一个入口,即判断框的入口,一个出口,即汇聚点的出口。
分支嵌套(分支嵌套学会划分条件)。 分析问题:
输入什么数据?(输入乘车的人数person与乘车的站数n) 处理什么问题?(根据n范围,计算应付款pay)
输出什么数据?(应付款pay) 设计算法:最重要的是判断条件
的划分,切入点用哪个数值,选择一个数据点,进行条件的划分。
建议:
不管先判断哪个条件,后判哪个条件,都要看到条件不成立时隐含着的条件,判断过的无需反复进行判断,但也不要漏掉哪段范围,尤其是一个个的边界值。
总结:
条件的划分是关键的,条件之间应做到不重复、不遗漏。 流程图:见上右图 循环结构(重复模式):
定义:有需要重复执行步骤的结构。 组成:
循环体:重复执行的步骤。
循环条件:判断是否执行循环体的条件。 特点:
有判断框,判断框内为循环条件。
有返回判断框或循环体的流程线。
循环结构中虽然有判断框,但循环结构只有一个入口,一个出口。 基本模式:
当型循环(重点)。
先判断循环条件,再决定是否执行循环体。 循环体有可能一次也不执行。 直到型循环。
先执行循环体,再判断循环条件,决定是否继续执行循环体。 循环体至少执行一次。 流程图规范画法:
当型循环
循环体画在判断框下面。
循环条件成立,画在判断框下面的一个顶点上,进入循环体。
循环条件不成立,画在判断框右面的一个顶点,并向下转到循环结构的后续步骤,退出循环结构。 VB语句: DO WHILE <循环条件> 循环体 LOOP
直到型循环
循环体下面画判断框。
循环条件成立,画在判断框下面一个顶点上,向下连到循环结构的后续步骤。
循环条件不成立,画在判断框左面的一个顶点上,并向上返回循环体
的入口。 VB语句: DO
循环体
LOOP until <循环条件> 控制循环的方法:
计数法
设置一个变量i记录循环体执行次数并控制循环执行情况的方法。 循环变量:变量i是控制循环体执行次数的变量。称为循环变量或计数变量。
循环体每执行一次,循环变量i的值增加1,用赋值语句i=i+1实现,
i=i+1起了计数的作用,因此,循环变量i也称为计数器。计数语句i=i+1应包含在循环体内。
循环变量的要素:循环变量的初值,终值,递增量决定了循环体执行
次数,称为循环变量的三要素。
VB程序代码:
最适宜实现的语句:for 循环 sum = 0
For i = 1 To 5
mark = InputBox(\"请输入一门成绩:\") sum = sum + mark Next i Print sum
或用当型语句实现
sum=0 i=1
DO WHILE i<=5
mark=InputBox(“请输入一门成绩:”) sum=sum+mark i=i+1 LOOP
Print sum
标志法
在循环次数确定的情况下,一般用计数法。若循环次数不确定,往往用设置标志性条件的方法来控制循环,称为标志法。 设置标志性条件的方法通常有:以输入某一个特殊的数据作为结束循
环的标志;以循环体中某个或几个变量满足规定条件作为结束循环的标志等。
例1:输入若干数x,当输入为999时结束,求输入数据的和s。
程序代码: s=0
x=InputBox(“输入x:”) DO WHILE x<>999
s=s+x
x= InputBox(“输入x:”) LOOP Print s
例2:求满足1+2+3+4+„+n<20最大的n值。 程序代码: s=0
i=1
DO WHILE s<20 s=s+i i=i+1 LOOP n=I-2 Print n
算法实例
解析法(analysis algorithm):用解析的方法,即找出表示问题的前提条件与
结果之间关系的数学表达式,并通过表达式的计算来实现问题求解的方法。 数列问题:从已知的初始条件出发,依据某种递推关系,逐次推出所要
求的各中间结果及最后结果的算法。
初始条件一般是问题本身已经给定,或者是通过对问题的分析与化简后
确定的。
枚举法:根据所需解决问题的条件,把该问题所有可能的解,一一列举出来,并逐个检验出问题真正解的方法。枚举法也称为穷举法。 在列举出所有可能的解时,既不能遗漏也不应重复。 枚举算法的关键步骤及注意点:
一一列举,用循环结构来实现,要注意循环变量、初值、终值和递增值的设置。
检验是否符合问题的要求,用分支结构实现,不同检验结果不同处理
方法。 注意点:循环变量与判断对象是否是同一个变量;一般情况下没有输
入;输出经常是在判断的一个分支中实现的。 排序问题:将若干个无序的数据按照降序或升序的次序排列。
冒泡排序:(N个数据排序)
需进行N-1轮冒泡
第i轮冒泡过程,数据比较的次数为:N-i次 每轮数据交换的次数是具体数据不定 特殊规定冒泡:根据规定按冒泡原理实施
查找算法:查找是查询数据或信息的技术,其目标为以较少的步骤或较短的
时间找到所需的对象。 顺序查找:逐个比较查找
对分查找:原始数据需有序,每次查找范围减半地比较查找 最值问题:在若干数据中寻找最大值(或最小值)。
最值问题一般采用的是擂台法。
因篇幅问题不能全部显示,请点此查看更多更全内容