- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
软件技术基础课件2——数据结构与算法1精要
* * * * * * * * * * * * * * * * * * * * Shanghai Jiao Tong University Shanghai Jiao Tong University 第二部分 数据结构与算法 数据结构基本概念 计算机科学与技术领域上广泛被使用的术语,反映一个数据的内部构成 数据结构:相互有关联关系的数据元素集合 数据元素具有广泛的含义 通常把数据元素之间这种固有关联关系简单地用前后继关系(或直接前驱与直接后继关系)来描述 狭义和广义的数据结构 数据的逻辑结构:反映数据元素之间逻辑关系 数据元素的集合 元素集合中的关系 B = (D, R) D是数据元素的集合;R是D上的关系,反映D数据元素之间的前后继关系; B即表示数据结构。 * 第一部分 数据结构与算法 数据结构基本概念 数据的物理存储——逻辑结构在计算机存储空间中的存放形式 依存储的硬件分类: 内存模式 外存模式 数据的物理结构: 顺序、链接、索引等 位置关系可能与逻辑关系不同 为了表示存放在计算机存储空间中的各数据元素之间的逻辑关系(即前后继关系),在数据的 存储结构中,不仅要存放各数据元素的信息,还需要存放各数据元素之间的前后继关系的信息 不同的结构访问效率不同 如数组和链表 * 第一部分 数据结构与算法 数据结构基本概念 数据运算 软件运行过程中,数据结构中的元素结点可能是动态变化的,因此对数据结构即有某种操作,即运算 软件中“对象”(数据对象)的变化(建立、删除、状态改变)是面向对象的软件系统的基本表现 插入与删除是对数据结构的两种基本运算。此外数据结构的基本运算还有查找、分类、合并、分解、复制和修改 * 第一部分 数据结构与算法 算法的基本概念 算法: 概念:规定解决某一特定问题所需一系列运算的一组有穷规则 特征: 确定性:算法的每一步运算必须是确定的、无二义性的 有穷性:执行有限个步骤后可停止 可行性:算法中所有运算步骤都是基本的 具有输入和输出:0个或多个输入;1个或多个输出 算法描述: 自然语言 形式语言:即数学描述 图形方式:N-S图、流程图,图的描述与算法语言的描述对应。 算法语言:即计算机语言、程序设计语言、伪代码。 * 第一部分 数据结构与算法 算法的基本概念 算法设计的基本方法: 列举: 根据提出的问题,列举所有可能情况,并用问题中给定的条件检验哪些是需要的,哪些是不需要的 归纳: 通过列举少量的特殊情况,经过分析找出一般关系 递推: 是指从已知的初始条件出发,逐次推出所要求的各中间结果和最后结果 递归: 将问题逐层分解,先不对问题进行求解,当解决了最后那些最简单问题后,再沿着原来分解的逆过程逐步进行综合 * 第一部分 数据结构与算法 算法的基本概念 算法设计的基本方法: 分类 本质属于归纳,可与归纳和演绎混合使用 常用的分类+递推:折半查找 回溯——试探 难以归纳出一组简单递推公式或直观求解步骤,且不能进行无限的列举 假定结果来试探是否合理,若不合理则重新试探 改变试探方法 改变假定结果 如:某些超越方程的求解 * 第一部分 数据结构与算法 算法的复杂度 时间复杂度:算法的时间耗费 设求解问题规模n,算法求解时间为n的函数T(n) 当问题的规模n无穷大时,T(n)的数量级称为算法的渐进时间复杂度 关于时间复杂度: 与所使用的计算机、程序设计语言以及程序编制者无关; 与算法实现过程中的许多细节无关 通常使用执行过程中所需基本运算的执行次数来度量算法的工作量。 用基本运算的次数来度量算法工作量,有利于比较同一问题的几种算法的优劣杂度:算法工作量=f (n) 基本运算:赋值、相加、比较、相乘…… * 第一部分 数据结构与算法 算法的复杂度 时间复杂度:算法的时间耗费 关于时间复杂度: 举例1: “在长度为n的一维数组中查找值为x的元素” 次数可能为1 … n, f (n) =1至n,因此T(n)= O(n) 举例2:交换a和b的内容。? Temp=i; i=j; j=temp;? 3步操作,次数均为1, f (n) =3, T(n)= O(1) 举例3:变量计数之一? x=0;y=0; For(k=1;k=n;k++) x++; For(i=1;i=n;i++) For(j=1;j=n;j++) y++; 理论操作次数 f (n)=n + n^2 ,复杂度T(n)= O(n^2) * 第一部分 数据结构与算法 算法的复杂度 空间复杂度:执行这个算法所需要的内存空间 包括: 算法程序所占的空间 输入的初始数据所占的存储空间 算法执行过程中所需要的额外空间 执行过程中的工作单元以及某种数据结构所需要的附加存储空间,
文档评论(0)