第1章_基础算法设计与详解试题.ppt

  1. 1、本文档共67页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
东北大学软件学院;与数据结构的区别: 考虑问题的角度:数据结构关心不同的数据结构在解题中的作用和效率;算法关心不同的设计技术的适用性和效率。 考虑问题的高度:数据结构关心的是解具体问题,算法不仅于此,它提供一种解决问题的通用方法。;About Algorithm;课程内容;计算机算法设计与分析(第3版). 王晓东. 电子工业出版社. 2007年5月;References;第1章 算法概述;本章教学要求 理解算法与程序的概念,二者区别与联系 掌握算法复杂性的渐近性态的数学表述 掌握描述算法的方法 重点 理解算法与程序 算法复杂性的渐近性态的数学表述 算法表示方法 难点 算法复杂性的渐进性态的数学表述;What’s Algorithm? 算法是一系列解决问题的清晰指令,也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出。;What is an algorithm?;算法的五个重要特征;Example of computational problem: sorting;一般求d=gcd(m,n)的过程用自然语言可以描述如下: (1) 找出m的素因子; (2) 找出n的素因子; (3) 找出m,n的公共的素因子; (4) 计算所有公共素因子的乘积,结果即为m,n的最大公约数。 这样的过程能称之为算法吗?;计算gcd(m,n)的连续整数检测算法;欧几里德算法;Some Well-known Computational Problems;程序 程序=数据结构+算法 可以不满足有限性 程序性能(program performance):指运行一个程序所需要的内存大小和时间。 算法的描述 自然语言方式、表格方式等 ;Basic Issues Related to Algorithms;Algorithm design strategies;Analysis of Algorithms;算法的复杂性 ; 1. 多用户系统中运行时,需指明分配给该程序的内存大小。 2. 想提前知道是否有足够可用的内存来运行该程序。 3. 一个问题可能有若干个内存需求各不相同的解决方案,从中择取。 4. 利用空间复杂性来估算一个程序所能解决的问题的最大规模。; 1.有些计算机需要用户提供程序运行时间的上限,一旦达到这个上限,程序将被强制结束。 2.正在开发的程序可能需要提供一个满意的实时响应。 ;一、空间复杂性;;数据空间(data space):用来存储所有常量和所有变量值所需的空间。 ;; 环境栈空间(environment stack space)-保存函数调用返回时恢复运行所需要的信息。当一个函数被调用时,下面数据将被保存在环境栈中: 返回地址; 所有局部变量的值、递归函数的传值形式参数的值; 所有引用参数以及常量引用参数的定义。;空间复杂度; 在分析空间复杂性中,实例特征的概念非常重要。所谓实例特征是指决定问题规模的那些因素。 输入和输出的数量或相关数的大小,如对n 个元素进行排序、n×n 矩阵的加法等,都可以n 作为实例特征,而两个m×n 矩阵的加法应该以n 和m 两个数作为实例特征。;令S(P)表示程序P需要的空间,则有 S(P) = c + SP(实例特征);利用引用参数 ;;Theoretical analysis of time efficiency;二、时间复杂性 time efficiency;估算运行时间的方法;templateclass T int Max(T a[ ], int n) { // 寻找a [ 0 : n - 1 ]中的最大元素 int pos = 0; for (int i = 1; i n; i++) if (a[pos] a[i]) pos = i; return pos; } ;templateclass T void Rank(T a[ ], int n, int r[ ]) {// 计算a[0:n-1]中n个元素的排名 for( int i =0;in; i++) r[i] = 0;//初始化 //逐对比较所有的元素 for(i = 0; in; i++) for(int j = 0; ji; j++) if (a[j] = a[i]) r[i]++; else r[j]++; };templateclass T void Insert(T a[], int n, const T

文档评论(0)

***** + 关注
实名认证
内容提供者

我是自由职业者,从事文档的创作工作。

1亿VIP精品文档

相关文档