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

数据结构课件 第一章 概论.ppt

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

数据结构与算法 一般来说,用计算机解决一个具体问题时,大致需经过以下几个步骤: 1、从具体问题抽象出一个适当的数学模型。 2、设计一个解此数据模型的算法。 3、编出程序,进行测试、调整直至得到最终解答。 如:求解梁架结构中应力的数学模型为线性方程组。 预报人口增长情况的数学模型为微分方程。 然而:更多的非数值计算问题无法用数学方程加以描述。 例3,学籍档案管理 假设一个学籍档案管理系统应包含如下表所示的学生信息。 结论 当今计算机应用的特点: 所处理的数据量大且具有一定的关系; 对其操作不再是单纯的数值计算,而更多地是需要对其进行组织、管理和检索。 数据结构研究的内容 有关数据结构的讨论一般涉及以下三个方面的内容: 1 数据成员以及它们相互之间的逻辑关系,也称为数据的逻辑结构,简称为数据结构; 2 数据成员及其关系在计算机存储器内的存储表示,也称为数据的物理结构,简称为存储结构; 3 施加于该数据结构上的操作。 问题:学习数据结构有什么用? 答:计算机内的数值运算依靠方程式,而非数值运算(如表、树、图等)则要依靠数据结构。   同样的数据对象,用不同的数据结构来表示,运算效率可能有明显的差异。   程序设计的实质是对实际问题选择一个好的数据结构,加之设计一个好的算法。而好的算法在很大程度上取决于描述实际问题的数据结构。   《算法+数据结构=程序》 1976年,瑞士的N.Wirth教授写的书名。   ①提高复杂程序设计的能力   ②培养算法设计能力 ?????? ?③为后继课程(如操作系统、编译原理等)打基础。 学习要求 熟练掌握基本内容:熟知概念,理解算法,熟练编程,灵活使用--上课+上机 学有余力的同学:扩展学习教材内容 准备找工作的同学:大量编程 授课内容 复杂度分析 链表 栈与队列 字符串匹配 二叉树、多叉树 图 排序 检索 高级线性结构(广义组) 课程考核 数据结构及算法编写与分析都是不容易的,平时勤学多练,独立完成作业,上机实验认真对待。 成绩评定: 学期总评 = 考试成绩占70%,作业占10%,上机实验占10%,出勤占10% 助教: 答疑: 作业要求: 独立完成,作业纸干净、整齐, 出勤要求: 不能迟到 数据结构课程科代表选定 每个班级推选一名 要求:对数据结构课程有极高的兴趣与热情,具有较好的编程基础,勇于挑战数据结构的难题,并且愿意与其他同学共享自己的思想。 职责:收发本班同学的作业;帮助老师收集、解决本班同学学习过程中的共性问题。 由各班班长负责落实。 算法及其特性 是对特定问题求解步骤的一种描述,它是指令的有限序列。 算法的时间度量 通常,从算法中选取一种对于研究的问题来说是基本操作的原操作,以该基本操作重复执行的次数作为算法执行的时间度量。 算法复杂度 问题的规模(n):或大小。 时间复杂度:记为 T(n)。当 n- ∞ 时的时间复杂性,被称之为渐进时间复杂度。 空间复杂度:记为 S(n)。当 n- ∞ 时的空间复杂性,被称之为渐进空间复杂度。 大O符号 给定两个正值函数 T 和 F,考虑以下定义: 定义: 如果存在正数c和N,对于所有的n≥N,有T(n)≤cF(n), 则T(n)=O(F(n))。 上述定义表明,如果对于足够大的n,或大于某自然数N的n,存在正数c,使 T 不大于cF,则 T 是F的大O符号。 复杂度举例 算法分析中常见的复杂度 O(1) O(lgn) O(n) O(nlgn) O(n2) O(n3) O(2n) O(n!) O(nn) 复杂度举例 确定渐近复杂度 时间复杂度通常计算程序执行过程中赋值和比较操作的次数。 例1: for (i=sum=0; in; i++) Sum +=a [i]; 赋值2+2n次,渐近复杂度O(n)。 确定渐近复杂度 例2: for ( i = 0; i n; i++ ){ for ( j = 1, sum=a [0]; j = i; j++ ) sum +=a [j]; cout“sum for subarray 0 through” i “is”sumendl; } 确定渐近复杂度 例3: for ( i = 4; i n; i++ ){ for ( j = i-3, sum = a [i-4]; j = i; j++ ) sum +=a [j]; cout“sum fo

文档评论(0)

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

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

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档