




已阅读5页,还剩19页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1,第1章 算法分析,1.1 算法 1.2 时间复杂度Big-O 1.3 思考题,2,1.1 算法,1.1.1 数组元素相加 1.1.2 矩阵相加 1.1.3 矩阵相乘 1.1.4 顺序查找,3,1.1 算法,算法(Algorithm)是一个解决问题的有限步骤过程,也可以说是在解答过程中的一步步过程。 1.1.1 数组元素相加 数组元素相加是将数组中每个元素的值加起来,其所对应的Java程序如下: public static int sum(int arr,int n) int i,total=0; for(i=0;in;i+) total+=arri; return total; ,4,1.1.2 矩阵相加,矩阵相加表示将相对应的元素相加, , 程序如下: public static void add(int a,int b,int c,int m,int n) for (int i=0; i n; i+) for (int j=0; j n; j+) cij = aij + bij ,5,1.1.3 矩阵相乘,矩阵相乘为 , , 对应的程序如下: public static void mul(int a, int b, int c, int n) int i,j,k,sum; for(i=0; i n; i+) for(j=0;jn;j+) sum=0; for(k=0;kn;k+) sum=sum+aik*bkj; cij=sum; ,6,1.1.4 顺序查找,顺序查找是指在一个数组中,由第1个元素开始依次查找,我们假设要找的数据一定在数组中,其程序如下: public static int search(int data,int target, int n) int i; for (i = 0;i n; i+) if (target = datai) return i; ,7,练习题,试回答下列程序中x = x+1;语句执行了多少次? for(i=1;i=n;i+) for (j=i;j=n;j+) x=x+1; for (i=1;i=n;i+) k=i+1; do x=x+1; while(k+=n); ,8,1.2 时间复杂度Big-O,在程序或算法中,每一条语句(statement)的执行时间为 : 此语句执行的次数; 每次执行此语句所需的时间。 两者相乘即为此语句的执行时间。,9,Big-O的定义,f(n)=O(g(n),当且仅当唯一存在正整数c及n0,使得f(n)cg(n),对所有的n,nn0。 上述的定义表示可以找到c和n0,使得f(n)cg(n),此时,我们称f(n)的Big-O为g(n)。,10,常见的Big-O,11,各种Big-O的比较,12,衡量效率的其他方法,除了Big-O之外,用来衡量效率的方法还有 和 ,以下是它们的定义。 的定义如下: f(n)=(g(n)当且仅当存在正整数c和n0,使得f(n)cg(n) ,对所有的n,nn0。 的定义如下: f(n)= (g(n),当且仅当存在正整数c1、c2及n,使得c1g(n)f(n)c2g(n),对所有的n,nn0。,13,二分查找法与顺序查找法的比较,从上表中的比较可以得知,二分查找法比顺序查找法效率高,那是因为二分查找法的Big-O为log2n,远比顺序查找法的Big-O为n来得好。,14,斐波纳契序列(Fibonacci number),其定义如下:,f0=0 f1=1 fn=fn-1 + fn-2 当 n 2时 因此 f2 = f1 + f0= 1 + 0 = 1 f3 = f2 + f1= 1 + 1 = 2 f4 = f3 + f2= 2 + 1 = 3 f5 = f4 + f3= 3 + 2 = 5 fn = fn-1 + fn-2,15,递归法,若以递归的方式进行计算的话, 如下图所示:,16,递归法,用递归方式,需计算的项目表如下:,17,递归法,Java 程序的以递归方式计算斐波纳契序列: int Fibonacci(int n) if(n=0) return 0; else if(n=1) return 1; else return(Fibonacci(n1)+Fibonacci(n2); ,18,非递归法,Java 程序的以非递归方式计算斐波纳契序列: Int Fibonacci(int n) int prev1, prev2, item, i; if(n=0) return 0; else if(n=1) return 1;,else prev2=0; prev1=1; for(i=2;i=n;i+) item=prev1+prev2; prev2=prev1; prev1=item; return item; ,19,递归和非递归求解费时比较,20,练习题,1 试问下列多项式的Big-O及找出c和n0,使其符合f(n)cg(n)。 (1)100n+9 (2)1000n2+100n8 (3)52n+9n2+2 2 试求下列多项式的,并找出c和n0。 (1)3n+1 (2)10n2+4n+5 (3)82n+8n+6 3 试求下列多项式的,并找出c1、c2及n0。 (1)3n+2 (2)9n2+4n+2 (3)8n4+5n3+5,21,1.3 思考题,1 请计算下列程序中x=x+1的执行次数。,22,思考题,23,思考题,2 假设数组A有10个元素,分别为2,4,6,8,10,12,14,16,18,20,请问若查找1,3,13及21这4个数,在下列的程序中,do while 内的语句分别执行多少次? i=1; j=10; /* 因为A数组有10个元素 */ do k=(i+j)/2; if(Ak = x) /* x为要查找的数据 */ i=k+1; else j=k1; while(i=j);,24,思考题,3 试问下列多项式f(n)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 医保药店人员管理制度
- 卫生诊所消毒管理制度
- 公司销售渠道管理制度
- DB62T 4501-2022 枣 银枣1号规范
- DB62T 4336-2021 龙芽草生产技术规程
- 专项维护方案么(3篇)
- 商铺开卖方案(3篇)
- 厨具施工方案(3篇)
- 汽车支架安置方案(3篇)
- 消防孤岛营救课件
- 2024-2025学年高二上学期期中家长会-家校同频共话成长 课件
- 2024年高考真题-化学(海南卷) 含答案
- 北海房地产市场月报2024年08月
- 项目经理或管理招聘笔试题及解答(某大型国企)
- 古代小说戏曲专题-形考任务4-国开-参考资料
- 2024-2030年电池项目商业计划书
- 基于项目化学习的数学跨学科作业设计
- 河南省南阳市邓州市2023-2024学年七年级下学期期末生物试题(解析版)
- emc能源管理合同
- 幼儿园语言故事《一顶大草帽》课件
- 2024年云南省中考历史试卷(附答案)
评论
0/150
提交评论