DS01-概论_201009.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Information College , BUU 付百文 制作 北院D楼4层4025 2010年7月 第 1 章 概 论 ???? 什么是数据结构 ???? 为什么要学习数据结构 抽象数据类型的表示与实现 ???? 算法和算法分析 通常,只求出T(n)随n而增长的趋势(极限)。人们通常采用大O表示法来描述算法分析的结果。 T(n)与f(n)的趋势一致。 T(n)=n+100 = O(n) 一般来说,在求时间复杂度时,主要考虑与程序规模有关的频度最大的语句(即“问题的原操作”),例如循环语句的循环体、多重循环的最内层循环等等。 本章要求 (1) 了解数据结构课程的目的和意义。 (2) 掌握数据结构、数据、数据元素、数据项、数据对象、数据类型、算法等概念。 (3) 掌握算法的特性、描述算法的工具和方法,了解算法常用的设计方法、算法分析的概念和方法。 本章知识点:数据、数据元素、数据结构、算法、算法设计、算法分析 ? 参考书 1 严蔚敏,吴伟民,数据结构(C语言版) ,清华出版社 2? 唐策善 . 数据结构——用C语言描述 ,高等教育出版社 3? 林志英 付百文 朱立平. 数据结构,中国林业出版社-北京希望电子出版社,2006.12 ? 参考书--习题集 [1]严蔚敏 吴伟民等 《数据结构题集(C语言版) 》 清华大学出版社 1999年2月第1版 [2]付百文 张宇宏 周海燕 《数据结构辅导与习题集》 人民邮电出版社 2004年9月第1版 [3]付百文 张宇宏 张冰峰 季全芝 《数据结构实训教程》 科学出版社 2005年4月第1版 附:《数据结构》对C语言课程的基本要求 《数据结构》对C语言课的基本要求,学生必备的基础: 程序设计的基本知识; 结构体类型、数组类型、指针类型、自定义类型; ?函数的定义、调用、参数、返回值 1.4.2 算法的描述和设计 一个算法可以采用自然语言、数学语言或者约定的符号语言(如伪码、N-S图、PAD图等图形)来描述。本书中的算法和数据结构均使用类C语言来描述。 算法设计的常用方法: (1) 穷举法:百钱百鸡、百马百瓦、单循环赛的场次 (2) 递推法:求阶乘、驴打滚本利计算 (3) 递归法:汉诺塔问题 (4) 回溯法 :迷宫、八皇后问题 fbw: 简略讲 如何评价算法的优劣? 一般来说,设计一个“好”的算法应该考虑以下几点: 1、正确性——算法应当满足具体问题的需求。 2、健壮性——当输入数据非法时,算法也能适当地作反应或进行处理,而不会产生莫明其妙的输出结果或出错信息,并中止程序的执行。 3、可读性——算法主要是为了方便人们的阅读和交流,其次才是机器执行。 4、执行算法所耗费的时间。 5、执行算法所耗费的存储空间,其中主要考虑辅助存储空间。 1.4.3 算法分析 评价一个程序优劣的重要依据是看这个程序的执行需要占用多少机器资源。在各种机器资源中,最重要的是时间资源和空间资源。程序所用算法在运行时所要花费的时间代价和程序中使用的数据结构所占有的空间代价。通常就称之为时间复杂度(时间代价)和空间复杂度(空间代价)。 意义:在问题的规模很大时,可以节省时间和空间,使问题能够或者能够较快、较容易地、较顺利地解决。 对于规模小的问题,不讨论它的复杂度问题。 算法的时间复杂度分析 通常,一个算法是由控制结构(顺序、选择和循环)和“原操作”(指固有数据类型的操作,一条基本语句)构成的,而算法时间取决于两者的综合效果。以原操作(基本操作)重复执行的次数作为算法的时间度量。记作 T(n),n是问题的规模。 例1.4 有下列三个程序段: ⑴{x=x+1; s=0;} ⑵for(i=1; i=n; i++){ x=x+1; s=s+x;} ⑶for(j=1; j=n; j++) for(k=1; k=n; k++) { x=x+1; s=s+x;} 它们含基本操作“x加1”的语句的频度分别为1、n和n2,因此,对于程序段⑴来说,其时间复杂度为O(1),程序段⑵的时间复杂度为O(n),程序段⑶的时间复杂度为O(n2)。 例1.5 对n个记录进行升序排序的问题, 采用最简单的选择排序方法。 整个排序过程的基本操作(即“原操作”)是“比较两个记录的大小”,含“比较”的语句的频度是: (n-1)+(n-2)+ … +1= n ×(n-1)/2 因此,其时间复杂度为O(n2)。 在同一个算法处理两个规模相同的问

文档评论(0)

飞扬的岁月 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档