严蔚敏吴伟民编着清华大学出版社计算机科学与技术学院.ppt

严蔚敏吴伟民编着清华大学出版社计算机科学与技术学院.ppt

  1. 1、本文档共42页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
严蔚敏吴伟民编着清华大学出版社计算机科学与技术学院.ppt

本课程的目的、任务、要求: 数据结构是计算机程序设计的重要理论技术基础,是计算机学科的核心课程,为专业技术基础课。 教学要求: 1.学会分析研究计算机加工的数据的数据结构特性,以便选择适当的逻辑结构、存储结构及其相应的算法;掌握算法的时间、空间复杂度。 2.锻炼学生的变成能力。要求编写的程序结构清楚,易读,符合软件工程的要求,培养学生的数据抽象能力。 本教材特性:全书采用类C语言作为数据结构和算法的描述语言。 总成绩=考试成绩+实验成绩+平时成绩 第一章 绪论 1.1 什么是数据结构 例1 书目自动检索系统 例2 人机对奕问题 教学计划编排问题 数据结构研究的主要内容: 数据结构是一门研究非数值计算的程序设计问题中计算机的操作对象以及它们之间的关系和操作等的学科。 数据的逻辑结构—只抽象反映数据元素的逻辑关系。 数据的存储(物理)结构—数据的逻辑结 构在计算机存储器中的存储形式(或称映象)。 元素/结点:用于表示数据元素的二进制位(bit)的位串。 数据域:用于表示数据项的二进制位(bit)的位串。 数据类型—一个值的集合和定义在这个值集上一组操作的总称。 1.4 算法和算法分析 算法效率的衡量方法和准则 有两种衡量算法效率的方法: 1.事后统计法:利用计算机内记时功能,用一组或多组相同的统计数据区分。 2.事前分析估计法:求出算法的一个时间界限函数。 算法=控制结构+原操作(固有数据类型的操作) 算法的执行时间=∑原操作(i)的执行次数╳原操作(i)执行时间 从算法中选取一种对于所研究的问题来说是基本运算的原操作,以该原操作重复执行的次数作为算法运行时间度衡量准则。 时间复杂度:程序运行从开始到结束所需要的时间。 设解决一个问题的规模为n,基本操作被重复执行的次数是n的一个函数 f(n),假如,随着问题规模n的增长,算法执行时间的增长率和f(n)的增长率相同,则可记作: T (n) = O(f(n)) 其中T(n)叫算法的渐进时间复杂度,简称时间复杂度。 选择排序 void select_sort(int a[], int n) { // 将 a 中整数序列重新排列成自小至大有序的整数序列。 for ( i = 0; i n-1; ++i ) { j = i; // 选择第 i 个最小元素 for ( k = i+1; k n; ++k ) if (a[k] a[j] ) j = k; if ( j != i ) a[j] ←→ a[i] } 基本操作: } // select_sort 比较(数据元素)操作 时间复杂度: O(n2) 可读性:易于人对算法的理解;另一方面,晦涩难读的程序易于隐藏较多错误而难以调试; 健壮性: 当输入的数据非法时,算法应当恰当地作出反映或进行相应处理,而不是产生莫名奇妙的输出结果。并且,处理出错的方法不应是中断程序的执行,而应是返回一个表示错误或错误性质的值,以便在更高的抽象层次上进行处理。 高效率与低存储量需求: 通常,效率指的是算法执行时间;存储量指的是算法执行过程中所需的最大存储空间。两者都与问题的规模有关。 和算法执行时间相关的因素: ?算法选用的策略 ?问题的规模 ?编写程序的语言 ?编译程序产生机器代码质量 ?机器执行指令速度 例1:NXN矩阵相乘 for(i=1; i=n; i++) for(j=1; j=n; j++) { c[i][j]=0; for(k=1; k=n; k++) c[i][j]=c[i][j]+a[i][k]*b[k][j]; } 显然,被称做问题的基本操作的原操作应是其重复执行次数和算法的执行时间成正比的原操作,多数情况下是最深层循环内的语句中的原操作,它的执行次数和包含它的语句频度相同。 语句频度:该语句重复执行的次数。 例2.{++x;s=0;} 例3.for(i=1; i=n; ++i) {++x; s+=x;} 例4. for(i=2; i=n; ++i) for(j=2; j=i-1; ++j) {++

文档评论(0)

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

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

1亿VIP精品文档

相关文档