网站大量收购独家精品文档,联系QQ:2885784924

算法分析与设计[绪论].ppt

  1. 1、本文档共68页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
效率比速度更重要 Rich Man Smart Programmer 举例:效率比速度更重要 Computer A: 109 instructions per second, running insertion sort. craftiest programmer codes insertion sort, requires 2n2 instructions. Computer B: 107 instructions per second, running merge sort. an average programmer codes, requires 50n log n instructions. Computer A is 100 times faster than computer B. 举例:效率比速度更重要 To sort one million numbers, computer A takes: Computer B takes: Computer B runs 20 times faster than computer A! 时间的渐进估计表示 定义1.2 如果存在两个正常数c和n0,对于所有的n≥n0,有 |f(n)|≥ c|g(n)| 则记作:f(n)=Ω(g(n)) 定义1.3 如果存在两个正常数c1 , c2和n0,对于所有的n≥n0,有 c1 |g(n)|≤ |f(n)|≤ c2 |g(n)| 则记作:f(n)=Θ(g(n)) 常用的整数求和公式 3. 如何表示算法 将算法的基本思想和基本步骤用语言表示出来,便于阅读并能很容易地用人工或机器翻译成其他实际使用的程序设计语言。 用SPARKS语言写算法 SPARKS语言的组成 基本数据类型 整型(integer),实型(float),布尔型(boolean),字符型(char) 保留字 具有特殊含义的标识符,用黑体字表示 SPARKS语言的组成(1) 变量命名规则 以字母开头,不允许使用特殊字符,不要太长,不允许与任何保留字重复。 语句:以分号作为语句结束的标志 赋值语句:变量 ? 表达式 布尔值:True False 逻辑运算符:and ,or ,not 关系运算符: ,≤ ,= ,≠ , ,≥ 数组:任意整数下界和上界的多维数组 SPARKS语言的组成(2) 条件语句 if 条件 then s1 或 if 条件 then else s2 s1 endif endif Case语句 case : 条件 1:s1 … : 条件 n:sn :else :sn+1 endcase SPARKS语言的组成(3) 循环语句 while 条件 do loop S S Repeat until 条件 repeat For vble?start to finish by increment do S Repeat SPARKS语言的组成(4) 过程(函数) Procedure Name(参数列表) 说明部分 S Return(表达式) End Name 局部变量(local variabl) 在当前的过程中说明的变量 全局变量(global variabl) 在已包含当前过程的过程中说明为局部变量的变量 形式参数(formal parameter) 参数表中的一个标识符 1.4 基本数据结构(略) 栈和队列 栈的运算 队列的运算 树 二元树 堆 二分检索树 图 1.4.3 集合的树表示和不相交集合的合并 ——树结构应用的实例 对于集合经常进行的是求取它们的交集和并集的运算。 若集合是一些不相交的集合,则对它们大量施行的两种基本运算是合并某些集合和查找某个元素在哪一个集合之中。 为了使集合的上述运算有效地被执行,就需要将集合中的元素构造成一定的结构形式。 集合操作举例 n=10,U={1, 2, 3, 4, 5, 6, 7, 8, 9, 10} s1={1, 7, 8, 9}; s2={2, 5, 10}; s3={3, 4, 6} 合并运算: s1∪s2={1, 7, 8, 9, 2, 5, 10} 查找运算: 元素4包含在s1, s2, s3的哪个集合中? 方法一:位向量 方法一:位向量 s1= {1, 0, 0, 0, 0, 0, 1, 1, 1, 0}; s2= {0, 1, 0, 0, 1, 0, 0, 0, 0, 1}; 利用位运算可得出 s1∪s2= {1, 1, 0, 0, 1, 0, 1, 1, 1, 1} 优点:用“逻辑加”和“逻辑乘”指令便于实现两个集合的并和交之类的运算。 缺点:只适用于n很小

文档评论(0)

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

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档