- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
算法与程序设计
第一章:计算机和算法
计算机解决问题的一般过程:
分析问题→设计算法→编写程序→运行程序→调试程序→问题解决
指令、程序、软件的区别:
指令:计算机执行某一操作的命令
程序:指令的有序集合,程序首先存储在计算机的内存中
程序由 指令部分(操作码) 和 数据部分(地址码)组成
软件:程序+相关的文档资料
算法:解决问题的方法和步骤
算法是程序设计的“灵魂”,克劳斯·沃思:算法+数据结构=程序
算法的特点:
有穷性 2、确定性 3、可行性 4、有0个或多个输入 5、有一个或多个输出
算法的3种描述:
自然语言 2、流程图 3、伪代码 或 程序语言
流程图基本图框:
算法的三种模式(结构):
顺序模式(顺序结构)、选择模式(分支结构)、重复模式(循环结构)
循环结构:“当型”可以不执行循环体,“直到型”至少执行一次循环体
变量:存储单元
区别 “变量名” 和 “变量值”
变量的特点:取之不尽、赋值即覆盖、先赋值后使用(取不尽、挤得掉、加得进)
变量的类型: 数值型 和 字符型(特征:有 ” ”)
字符串型的比大小:“9”“100000”;“AbC”“ABC”都为 真(true或1)
解释:从第一个字符开始比,如果大则大,不管后面,如果一样,再比较第二个字符以此类推。
变量的赋值 赋值号 : “=” 或者 “←”
解释:先计算“赋值号”右边的值,再将值赋给“赋值号”左边的变量
变量的交换 (关键看第二步知道哪两个变量交换)
例如:a=3,b=2交换两个变量:
temp=a
a=b
b=temp(首尾呼应,承上启下)
运算符:
类别 运算符 结果 优先级 算术运算符 +、-、*、/、mod、^ 数值 ①^ ②*、/、mod
③+、- 字符串运算符 + 字符串(有双引号) 关系运算符 、、=、 =、 true或false 相同 逻辑运算符 not 、and、or true 或 false ①not②and③or 优先级:
算术和字符串运算符关系运算符逻辑运算符(由高到低)
括号可以改变优先级次序
同一优先级 自左向右
函数 功能 Abs(x) 求x的绝对值 Sqrt(x)或Sqr(x) 求x的算术平方根 Int(x) 求不大于x的最大整数
例如:Int(3.5)=3 Int(-3.5)=-4 函数:供程序设计者直接使用的小程序
表达式:
例如:, x=(-b+sqr(b*b-4*a*c))/(2*a)第二章:基本算法实例
解析算法
用解析的方法找出表示问题的前提条件(已知条件)与结果之间的数学表达式
分段函数的算法过程 属于解析法
枚举算法
用计算机一 一 列举、逐个检验,选出满足条件数据的算法称之为“枚举算法”
枚举法的步骤
(1)确定列举范围
(2)明确检验条件
(3)确定循环控制方式和列举方式(循环嵌套分支):
“一 一 列举”为循环结构,“逐个检验”为分支结构
循环嵌套循环时,循环次数n为
外循环i的次数 × 内循环j的次数,即 n= i*j
数组:
(1)数组它是个特殊的变量
(2)它在内存中的开辟连续的存储单元
(3)每一个存储单元对应一个数组元素
(4)数组是用来存储一批类型、作用相同的数据;数组元素可以参与赋值和运算
(5)数组的规模:容纳数组元素的个数
数组名为d,规模为5,有时数组元素名d[1]写成d(1)
如图可知:d[1]=1, d[4]=d[2+2]=61, d[5]=(d[3]-d[2])-2*d[1]
排序与查找
排序:冒泡排序和选择排序,查找:顺序查找和对分查找
排序:把杂乱无章的数据变为有序数据过程
冒泡排序:通过“从后往前或者从下而上”的逐遍加工,采用相邻2个元素互换位置的方法来调整最大值或最小值
选择排序:(不是插队而是交换位置)
对于n个数的选择排序,
第一次遍历原始数据,将最值数据与1号位置的数据位置进行交换,
第二次遍历时,只需观察接下来n-1个数中的最值与2号位置的数据进行交换,
第三次遍历时,只需观察接下来n-2个数中的最值 与3号位置的数据进行交换…以此类推
归纳:
冒泡排序:对于n个数冒泡排序,最多需要n-1趟完成排序,
选择排序:它比冒泡排序更加优化,执行效率高,区别在于减少了交换的次数。有n个元素,最多也要n-1趟完成排序
顺序查找:对于n个数的查找,最差情况要查找n次
对分查找(二分法查找):首先被查找的数据必须是有序的
对于n个数,最差情况要查找 [log2n]+1次,[]为向下取整
选择排序:原始数据:7,6,3,9,2 从小到大
顺序查找:
对分查找:
由于规模为5,故二分法第一次查找d()=d(3),第二次查找d()=d(4)
注:向下取整,第三次查找d(5)
文档评论(0)